前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiro中@RequiresRoles使用

Shiro中@RequiresRoles使用

作者头像
程序新视界
发布2021-01-30 14:19:48
9610
发布2021-01-30 14:19:48
举报
文章被收录于专栏:丑胖侠

Shiro中通过@RequiresRoles注解可检验权限,在检验权限之前先要设置权限:

授权方法中给用户添加角色

在自定义的Realm中(继承实现AuthorizingRealm)的doGetAuthorizationInfo方法中授权方法中给用户添加角色。

代码语言:javascript
复制
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
    String userName = (String) principalCollection.getPrimaryPrincipal();
    SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
    // 从数据库获取角色
    Set<String> roles = getRolesByUserName(userName);
    simpleAuthorizationInfo.setRoles(roles);
    return simpleAuthorizationInfo;
}

使用@RequiresRoles检验权限

在Controller中对应的方法上使用注解校验对应的授权:

代码语言:javascript
复制
@PostMapping("/list")
@RequiresRoles("a")
public void list(){//...}

多个角色或权限

如果有多个权限/角色验证的时候中间用“,”隔开,默认是所有列出的权限/角色必须同时满足才生效。

默认为logical=Logical.AND,表示所有列出的都必须满足才能进入方法。

在注解中可通过logical=Logical.OR,表示所列出的条件只要满足其中一个就可以。

代码语言:javascript
复制
@RequiresRoles(value={"admin","user"},logical = Logical.OR)
@RequiresPermissions(value={"add","update"},logical = Logical.AND)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 授权方法中给用户添加角色
  • 使用@RequiresRoles检验权限
  • 多个角色或权限
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档