springboot项目之AOP角色权限的判断

发布时间:2024年01月18日

引言

? ? ? 开发的项目中,可能遇到不同的角色,不同的角色有不通的权限定义。AOP切面是个很好的解决方案。

实践

1.?定义MerchRoles?


@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MerchRoles {

}

2.?定义切点

public class MerchAop {
    @Autowired
    private 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("无权访问");
        }
        Map<String, Object> response = (Map<String, Object>) p.proceed();
        return response;
    }
    private Boolean getUserPermissions(WxLoginUser user) {
        //建议采用redis缓存方案,更好
        MPJLambdaWrapper<MerchGroupDto> wrapper = new MPJLambdaWrapper<MerchGroupDto>()
                .selectAll(MerchGroupDto.class)
                .eq(MerchGroupDto::getMemberId, user.getUserId());
        List<MerchGroupDto> list1=merchGroupMapper.selectJoinList(MerchGroupDto.class, wrapper);
        if(CollUtil.size(list1)>0){
            return true;
        }
        return false;
    }

}

3. controller控制器,就使用吧。

文章来源:https://blog.csdn.net/sccd2009/article/details/135676080
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。