十堰哪里有做网站的,企业网络组网,美妆网站建设环境分析,太原网页设计公司前言
项目开发需求#xff0c;会员有不同的角色#xff0c;不同的角色被赋予不同的权限#xff0c;这就需要对会员的操作进行鉴权处理。
方案
采用aop#xff0c;可实现满足这种需求#xff0c;创建匿名类。对外提供接口的时候都会拦截#xff0c;这种会有弊端#x…前言
项目开发需求会员有不同的角色不同的角色被赋予不同的权限这就需要对会员的操作进行鉴权处理。
方案
采用aop可实现满足这种需求创建匿名类。对外提供接口的时候都会拦截这种会有弊端当并发量大时会存在瓶颈。
Configuration
Aspect
public class BusyAop {Autowiredprivate DdMemberRolesMapper ddMemberRolesMapper;Pointcut(annotation(com.ruoyi.shop.api.aop.BusyOperatorRole))private void permissionCheck() {}Around(permissionCheck())public Object around(ProceedingJoinPoint p) throws Throwable{WxLoginUser user(WxLoginUser) getAuthentication().getPrincipal();//建议采用redis缓存方案更好ListMemberRolesDo list getUserPermissions(user);if(CollUtil.size(list)0){return AjaxResult.warn(无权访问);}MapString, Object response (MapString, Object) p.proceed();return response;}private ListMemberRolesDo getUserPermissions(WxLoginUser user) {MPJLambdaWrapperMemberRolesDo wrapper new MPJLambdaWrapperMemberRolesDo().selectAll(MemberRolesDo.class).leftJoin(BusyMerchDto.class, BusyMerchDto::getMemberId, MemberRolesDo::getMemberId).leftJoin(BusyGroupDto.class, BusyGroupDto::getBusyMerchId, BusyMerchDto::getBusyMerchId).eq(MemberRolesDo::getRolesType, 6).eq(BusyGroupDto::getMemberId, user.getUserId());return ddMemberRolesMapper.selectJoinList(MemberRolesDo.class, wrapper);}}
如果有更好的方案请评论私聊我。