Shiro是一个很具灵活性的验证框架。
不过也有些不完美的地方。
因为,本身支持了permission级别的权限验证,role级别的就没怎么弄。
结果 RolesAuthorizationFilter 是按照 hasAllRoles来判断的。
http://shiro-user.582556.n2.nabble.com/Shiro-ini-multiple-roles-for-one-url-td6806837.html
因此想要 得到 满足一个role列表即可的判断,要自己实现判断的filter,代码如下。
public class MyRolesAuthorizationFilter extends AuthorizationFilter {
@SuppressWarnings({"unchecked"})
public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException {
Subject subject = getSubject(request, response);
String[] rolesArray = (String[]) mappedValue;
if (rolesArray == null || rolesArray.length == 0) {
//no roles specified, so nothing to check - allow access.
return false;
}
List<String> roles = CollectionUtils.asList(rolesArray);
boolean[] hasRoles = subject.hasRoles(roles);
for (boolean hasRole : hasRoles) {
if (hasRole) {
return true;
}
}
return false;
}
}
分享到:
相关推荐
Shiro 1.2.1 版本是该框架的一个稳定版本,它包含了多个修复和改进,以提升性能和兼容性。 在Shiro 1.2.1中,主要关注以下几个关键知识点: 1. **认证(Authentication)**:Shiro 提供了完整的身份验证流程,包括...
1. **配置Shiro**:在Spring或者其他的配置文件中,你需要声明并配置Shiro的相关过滤器,如`authc`(用于身份验证)、`perms`(基于权限的拦截)和`roles`(基于角色的拦截)。 2. **定义角色和权限**:在提供的`...
3. **配置 Shiro**:在 Shiro 配置文件(如 `shiro.ini` 或 `shiro.xml`)中,你需要指定 CAS 服务器的 URL,以及你的应用如何验证服务票证。这包括 CAS 登录 URL、服务验证 URL 和 CAS 出票 URL。 4. **创建 ...
标签中的"shiroall"可能是指包含所有模块的Shiro全集JAR,这是一个集成了Shiro所有功能的单一文件,便于那些不想或不能单独管理每个模块的开发者使用。"shiro1.1"和"shiro1.2"代表了Shiro框架的两个具体版本,分别...
以上就是 Apache Shiro 的最简单整合版本,它涵盖了基本的身份认证、授权流程和配置。然而,实际项目中可能需要考虑更多细节,如会话管理、缓存策略、Web 应用的集成等。Shiro 提供了丰富的 API 和扩展点,可以根据...
shiro-core 低版本漏洞检测工具
在Shiro 1.5.x及之前的版本中,可能存在认证漏洞,使得恶意用户能够通过某种方式绕过常规的身份验证流程。这可能是因为Shiro的某些组件在处理认证请求时,没有严格按照预期的方式验证用户凭证。1.6.0版本的更新修复...
本demo为Spring boot整合shiro,以mybatis plus做dao层交互数据,实现了读取数据库用户数据实现用户登录,权限认证,读取数据库中用户对应的url请求,实现请求的过滤。自定义了relam和过滤器来实现这些功能
实际上,这个修复并不完全,由于shiro在处理url时与spring仍然存在差异,shiro最新版仍然存在身份校验绕过漏洞。2020年8月17日,Apache Shiro发布1.6.0版本修复该漏洞绕过。阿里云应急响应中心提醒Apache Shiro用户...
shiro使用的版本是1.2.4,存在反序列化漏洞,我们采取的办法是手动升级到了1.2.6版本,但苦于无法验证是否解决了问题,后来发现了一款测试工具,ShiroExploit。 测试工具下载地址 ... 反序列化漏洞是如何产生的?...
然后,你需要创建一个`ShiroFilter`配置,定义Shiro过滤器链,这是Shiro控制URL访问的核心部分。在`web.xml`或Spring Boot的配置文件中,你会看到类似下面的配置: ```xml <filter-name>shiroFilter ...
2. **URL权限映射**:在Shiro配置文件中,可以将URL与权限进行映射,例如`/admin/* = roles[admin]`表示访问以`/admin/`开头的所有URL都需要`admin`角色。 3. **动态权限分配**:Shiro支持在运行时动态地分配权限,...
在 web 应用中,可以通过配置 `shiro.ini` 或者 `Web.xml` 来定制过滤器。 6. **Caching**:Shiro 支持缓存管理,可以缓存认证和授权信息,提高性能。 7. **Testing**:源码中包含了测试用例,帮助开发者理解和...
在标签中提到了“shiro兼容包”,这通常指的是为了保证与旧版本系统兼容,或者解决特定环境下的问题,Shiro提供的额外支持包。在升级过程中,如果遇到兼容性问题,这些包可能非常有用。同时,提到了“权限绕过漏洞 ...
4、优点:快速上手、全面支持验证、授权、加密和会话、灵活自定义设计、支持web环境、可以无缝集成spring等优点。可以用来用户验证、用户授权、用户session管理、安全加密等 5、基于RBAC五张表:用户表 tb_user、...
Apache Shiro 是一款功能强大且易于使用的 Java 安全框架,它提供了多种安全相关的功能和服务,包括但不限于认证、授权、加密和会话管理。相较于其他安全框架,Shiro 在设计上更为简洁明了,便于开发者的理解和使用...
然后,我们需要在 `spring-shiro-web.xml` 文件中配置 Shiro 的 Filter Chain Definition,定义哪些 URL 应该被哪个 Filter 处理。例如: ```xml <bean id="shiroFilter" class="org.apache.shiro.spring.web....
shiro是apache提供的强大而灵活的开源安全框架,它主要用来处理身份认证,授权,企业会话管理和加密。 shiro功能:用户验证、用户执行访问权限控制、在任何环境下使用session API,如cs程序。