最近刚入职新公司。维护一个老的系统。然后我把权限逻辑基于AOP给简单优化了一下。之后使用注解就可以了。作为一个自定义注解+AOP的实战记录把。
1、提供了一个注解:@CheckPermission
/**
* @author zhangjiahui01
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface CheckPermission {
/**
* 权限校验类型:PermissionTypeEnum
*
* @return
*/
PermissionTypeEnum type() default PermissionTypeEnum.ONLY_CHECK_PATH;
/**
* 校验如果需要参数列表里的额外参数,使用该字段指定参数名字
*
* 1.如果直接是参数列表的参数:参数名字
* 2.如果需要的值是对象的属性:参数名.属性名
*
* 注意:目前只支持两层嵌套的数据结构参数
* eg:
*
* @CheckPermission(param ="param")
* public void getTempCardList(String param, HttpServletRequest request, HttpServletResponse response){
* ......
* }
*
* @CheckPermission(param ="eduExperienceAddRequest.number")
* public void getTempCardList(EduExperienceAddRequest eduExperienceAddRequest, HttpServletRequest request, HttpServletResponse response){
* ......
* }
*
* @return
*/
String param() default "";
2、PermissionTypeEnum 权限类型枚举
/**
* @author zhangjiahui01
*/
public enum PermissionTypeEnum {
EMPLOY_INFO_ACTION("Employ Info Action", ""),
EMPLOY_PAY_ACTION("Employ Pay Action", ""),
ONLY_CHECK_PATH("Only Check Path", "是否有权限访问URL");
private String code;
private String desc;
PermissionTypeEn