yml配置
data:
limit:
aaaRoleId: 111
bbbRoleId: 222
配置类
@Data
@Component
@ConfigurationProperties(prefix = "data")
public class DataLimitCfg {
private Map<String, String> limit;
}
aop注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DataLimit {
String roleName() default "";
String deptName() default "";
}
aop配置
@Aspect
@Component
@Slf4j
@Order(2)
public class DataLimitAspect {
@Autowired
private DataLimitCfg dataLimitCfg;
@Pointcut("@annotation(com.xxx.annotation.DataLimit)")
public void dataLimitPointcut() {
}
@Before("dataLimitPointcut()")
public void before(JoinPoint joinPoint) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
DataLimit annotation = method.getAnnotation(DataLimit.class);
Map<String, String> map = dataLimitCfg.getLimit();
String val = map.get(annotation.roleName());
if (StringUtils.isEmpty(val)) {
throw new RolelNoMatchException("角色配置错误,请联系管理员");
}else {
if (Xxxx.notHasRoleId(val)) {
throw new RolelNoMatchException("账号暂无对应角色权限");
}
}
}
}
角色id比较
Integer.toString equals (String)
Integer.getId().toString().equals(roleId)