1、自定义注解
自定义注解可以写业务需要的函数逻辑,验证权限
自定义注解有两个必要的元注解:
(1)Target
用来描述注解的修饰范围,共四种:
(a)TYPE:类、接口、enum
(b)METHOD:方法
(c)PARAMETER:方法变量
(d)PACKAFE:包
(2)Retention
用来控制该注解的生命周期,共三种:
(a)SOURCE:源文件中有效,编译无效
(b)CLASS:随源文件编译至class文件中,运行时无效
(c)RUNTIME:运行时也有效
举个栗子
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface PreAuthorize{...验证函数}
2、AOP注入
权限控制需要给特定的业务验证权限,将注解加在需要权限控制的方法上,因此需要AOP注入
@Aspect
@Component
public class PreAuthorizeAspect{
@Around("@annotation(com.ruoyi.common.security.annotation.PreAuthorize)")
public Object around(ProceedingJoinPoint point) throws Throwable{...实现验证函数}
}
(a)写一个Aspect类,加切面注解。
(b)在@Around注解中绑定要验证的自定义注解。
(c)实现该自定义注解中的函数,以完成验证。