springboot实战项目之使用AOP技术实现各种角色的鉴权功能

前言

项目开发需求,会员有不同的角色,不同的角色被赋予不同的权限,这就需要对会员的操作进行鉴权处理。

方案

采用aop,可实现满足这种需求,创建匿名类。对外提供接口的时候都会拦截,这种会有弊端,当并发量大时,会存在瓶颈。

@Configuration
@Aspect
public class BusyAop {
    @Autowired
    private 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缓存方案,更好
        List<MemberRolesDo> list = getUserPermissions(user);
        if(CollUtil.size(list)==0){
            return AjaxResult.warn("无权访问");
        }
        Map<String, Object> response = (Map<String, Object>) p.proceed();
        return response;
    }

    private List<MemberRolesDo> getUserPermissions(WxLoginUser user) {
        MPJLambdaWrapper<MemberRolesDo> wrapper = new MPJLambdaWrapper<MemberRolesDo>()
                .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);
    }

}

如果有更好的方案,请评论私聊我。

相关推荐

  1. springboot项目jwt认证(企业级实现方案)

    2023-12-14 12:36:03       18 阅读
  2. springboot项目AOP角色权限判断

    2023-12-14 12:36:03       32 阅读
  3. asp.net core webpi 结合jwt实现登录

    2023-12-14 12:36:03       38 阅读
  4. 通过SpringCloudGateway中GlobalFilter实现过滤

    2023-12-14 12:36:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-14 12:36:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-14 12:36:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-14 12:36:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-14 12:36:03       20 阅读

热门阅读

  1. Oracle Linux 8 安装图形界面和tigervnc-server

    2023-12-14 12:36:03       50 阅读
  2. C#修饰符

    2023-12-14 12:36:03       45 阅读
  3. 【无标题】

    2023-12-14 12:36:03       42 阅读
  4. 【libp2p-echo案例】

    2023-12-14 12:36:03       39 阅读
  5. 【Socket】Unix环境下搭建简易本地时间获取服务

    2023-12-14 12:36:03       32 阅读
  6. 插件的使用--一些注解

    2023-12-14 12:36:03       40 阅读
  7. CSS笔记

    CSS笔记

    2023-12-14 12:36:03      43 阅读
  8. net配置数据库链接的两种方式

    2023-12-14 12:36:03       30 阅读