Shiro中@RequiresRoles使用

简介: 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(){//...}

1

2

3

多个角色或权限

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


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


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


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

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

1

2

相关文章

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


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



目录
相关文章
|
SQL XML Java
Mybatis:SQL注入问题 like模糊查询 多表查询 动态SQL
Mybatis:SQL注入问题 like模糊查询 多表查询 动态SQL
2211 0
|
Windows
Windows查看端口占用以及关闭相应的进程
Windows查看端口占用以及关闭相应的进程
590 0
|
12月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
1488 1
|
12月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
2543 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
8月前
|
机器学习/深度学习 缓存 人工智能
《DeepSeek在高并发下的性能秘籍:稳定性与速度保障》
DeepSeek是一款基于Transformer架构的大语言模型,专为高并发场景设计。通过自注意力机制、分布式系统和负载均衡技术,DeepSeek能高效处理多请求,确保稳定性和快速响应。其缓存机制加速数据获取,模型优化提升计算效率,动态资源调配灵活应对流量波动。这些技术共同作用,使DeepSeek在智能客服、内容推荐等场景中表现出色,成为高并发应用的理想选择。
822 10
Jackson 使用 @JsonFormat 注解进行时间格式化
Jackson 使用 @JsonFormat 注解进行时间格式化
801 2
|
JavaScript
vue 数据变化触发页面响应的三种方式(解决:数据变化页面无响应/不刷新的问题)【含原理】
vue 数据变化触发页面响应的三种方式(解决:数据变化页面无响应/不刷新的问题)【含原理】
500 0
|
前端开发
Access to XMLHttpRequest at ‘xxxxx‘ from origin :xxxxx has been ssss,跨域访问
Access to XMLHttpRequest at ‘xxxxx‘ from origin :xxxxx has been ssss,跨域访问
|
JavaScript 索引
js【详解】arr.splice() 数组拼接
js【详解】arr.splice() 数组拼接
1028 0
|
NoSQL Redis Docker
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
1479 0