做明星网站,网站建设基本流程教学视频,郑州seo顾问外包,动易的网站系统引言 开发的项目中#xff0c;可能遇到不同的角色#xff0c;不同的角色有不通的权限定义。AOP切面是个很好的解决方案。
实践
1. 定义MerchRoles Retention(RetentionPolicy.RUNTIME)
Target(ElementType.METHOD)
public interface MerchRoles {}
2. 定义切点
public c…引言 开发的项目中可能遇到不同的角色不同的角色有不通的权限定义。AOP切面是个很好的解决方案。
实践
1. 定义MerchRoles Retention(RetentionPolicy.RUNTIME)
Target(ElementType.METHOD)
public interface MerchRoles {}
2. 定义切点
public class MerchAop {Autowiredprivate DtoMerchGroupMapper merchGroupMapper;Pointcut(annotation(com.ruoyi.shop.api.aop.MerchRoles))private void permissionCheck() {}Around(permissionCheck())public Object around(ProceedingJoinPoint p) throws Throwable{WxLoginUser user(WxLoginUser) getAuthentication().getPrincipal();//建议采用redis缓存方案更好if(BooleanUtil.isFalse(getUserPermissions(user))){return AjaxResult.warn(无权访问);}MapString, Object response (MapString, Object) p.proceed();return response;}private Boolean getUserPermissions(WxLoginUser user) {//建议采用redis缓存方案更好MPJLambdaWrapperMerchGroupDto wrapper new MPJLambdaWrapperMerchGroupDto().selectAll(MerchGroupDto.class).eq(MerchGroupDto::getMemberId, user.getUserId());ListMerchGroupDto list1merchGroupMapper.selectJoinList(MerchGroupDto.class, wrapper);if(CollUtil.size(list1)0){return true;}return false;}}
3. controller控制器就使用吧。