Shiro拦截器给方法授权,赋访问权限

ShiroConfig配置类重写授权方法:


    //授权方法
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principal) {
        //从session中获取到当前登录的用户对象
        //Object principal = SecurityUtils.getSubject().getPrincipal();
        UserBean primaryPrincipal = (UserBean) principal.getPrimaryPrincipal();
        //后台数据库查询是否由此字段并返回权限字
        List<String> powerList = userService.queryPowerKeyByUserId(primaryPrincipal.getId());  
        //List<String> objects = new ArrayList<>();
        //赋权限
        //objects.add("user:findUserList");
        //创建一个授权器
        SimpleAuthorizationInfo sai = new SimpleAuthorizationInfo();
        sai.addStringPermissions(powerList);
        return sai;
    }

Mapper层根据sql查询出权限字:

    @Select("select distinct pm.remark from t_user_role ur,t_role_power rp,t_power_menu pm         where ur.roleid = rp.roleid\n" +
            "            and rp.powerid = pm.powerId\n" +
            "            and ur.userid = #{value}")
    List<String> queryPowerKeyByUserId(Integer  id);

给你的方法加一个注解@RequiresPermissions("user:findUserList")(权限字)

    // 分页用户查询
    @RequiresPermissions("user:findUserList")
    @RequestMapping("findUserList")
    @ResponseBody
    public EasyuiPage findUserList(Integer page, Integer rows, UserBean userBean) {
        return userService.findUser(page, rows, userBean);
    }

如果你从后台查出的权限字和@RequiresPermissions中的权限字一致,则必须给用户赋权限才可以访问,否则无法访问。

MySql remark字段:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值