Shiro中@RequiresRoles使用

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

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

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

@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中对应的方法上使用注解校验对应的授权:

@PostMapping("/list")
@RequiresRoles("a")
public void list(){//...}

多个角色或权限

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

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

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

@RequiresRoles(value={"admin","user"},logical = Logical.OR)
@RequiresPermissions(value={"add","update"},logical = Logical.AND)

相关文章

《还在亲手写Filter进行权限校验?尝试一下Shiro吧》

《不解释,全网最全Shiro认证与授权原理分析》


程序新视界

公众号“ 程序新视界”,一个让你软实力、硬技术同步提升的平台,提供海量资料

微信公众号:程序新视界

要在 Spring Boot 使用 Shiro 1.10.0,您需要执行以下步骤: 1. 添加 Shiro 依赖项 在 pom.xml 文件添加以下依赖项: ```xml <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-starter</artifactId> <version>1.6.0</version> </dependency> ``` 2. 配置 Shiro 在 application.properties 或 application.yml 文件添加以下 Shiro 配置: ```yaml shiro: # 开启 Shiro注解支持,例如 @RequiresRoles, @RequiresPermissions 等 enabled: true # Shiro 过滤器链配置 filter-chain-definition-map: # 可以在此处添加自定义的过滤器链规则 # /user/** 表示对 user 目录下的所有请求进行拦截,authc 表示需要认证才能访问 /user/**: authc # Shiro Realm 配置 realms: # 可以在此处添加自定义的 Realm 类 # realm1 表示 Realm 类的名称,com.example.MyRealm 表示该类的全限定名称 realm1: class-name: com.example.MyRealm ``` 3. 编写 Shiro Realm 类 编写一个自定义的 Realm 类,继承 org.apache.shiro.realm.AuthorizingRealm 类,并重写 doGetAuthorizationInfo 和 doGetAuthenticationInfo 方法,实现权限和认证的逻辑。 ```java public class MyRealm extends AuthorizingRealm { // 认证逻辑 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { // 在此处编写认证逻辑 return null; } // 授权逻辑 @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { // 在此处编写授权逻辑 return null; } } ``` 以上就是在 Spring Boot 使用 Shiro 1.10.0 的基本步骤。需要注意的是,Shiro 的配置非常灵活,可以根据具体的需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序新视界

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

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

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

打赏作者

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

抵扣说明:

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

余额充值