`
dwangel
  • 浏览: 267361 次
社区版块
存档分类
最新评论

Shiro 1.2.1及以前版本,不支持url配置anyRoles

 
阅读更多
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;
    }
}
分享到:
评论

相关推荐

    Shiro1.2.1

    Shiro 1.2.1 版本是该框架的一个稳定版本,它包含了多个修复和改进,以提升性能和兼容性。 在Shiro 1.2.1中,主要关注以下几个关键知识点: 1. **认证(Authentication)**:Shiro 提供了完整的身份验证流程,包括...

    基于Shiro 拦截URL,实现权限控制

    1. **配置Shiro**:在Spring或者其他的配置文件中,你需要声明并配置Shiro的相关过滤器,如`authc`(用于身份验证)、`perms`(基于权限的拦截)和`roles`(基于角色的拦截)。 2. **定义角色和权限**:在提供的`...

    shiro-cas-1.2.1.jar

    3. **配置 Shiro**:在 Shiro 配置文件(如 `shiro.ini` 或 `shiro.xml`)中,你需要指定 CAS 服务器的 URL,以及你的应用如何验证服务票证。这包括 CAS 登录 URL、服务验证 URL 和 CAS 出票 URL。 4. **创建 ...

    shiro所有版本jar

    标签中的"shiroall"可能是指包含所有模块的Shiro全集JAR,这是一个集成了Shiro所有功能的单一文件,便于那些不想或不能单独管理每个模块的开发者使用。"shiro1.1"和"shiro1.2"代表了Shiro框架的两个具体版本,分别...

    shiro最简单整合版本

    以上就是 Apache Shiro 的最简单整合版本,它涵盖了基本的身份认证、授权流程和配置。然而,实际项目中可能需要考虑更多细节,如会话管理、缓存策略、Web 应用的集成等。Shiro 提供了丰富的 API 和扩展点,可以根据...

    shiro-core 低版本漏洞检测

    shiro-core 低版本漏洞检测工具

    shiro1.6版本

    在Shiro 1.5.x及之前的版本中,可能存在认证漏洞,使得恶意用户能够通过某种方式绕过常规的身份验证流程。这可能是因为Shiro的某些组件在处理认证请求时,没有严格按照预期的方式验证用户凭证。1.6.0版本的更新修复...

    spring boot整合shiro实现url请求过滤

    本demo为Spring boot整合shiro,以mybatis plus做dao层交互数据,实现了读取数据库用户数据实现用户登录,权限认证,读取数据库中用户对应的url请求,实现请求的过滤。自定义了relam和过滤器来实现这些功能

    shiro-core 1.6.0版本 下载.rar

    实际上,这个修复并不完全,由于shiro在处理url时与spring仍然存在差异,shiro最新版仍然存在身份校验绕过漏洞。2020年8月17日,Apache Shiro发布1.6.0版本修复该漏洞绕过。阿里云应急响应中心提醒Apache Shiro用户...

    Shiro反序列化漏洞,Shiro版本升级资源

    shiro使用的版本是1.2.4,存在反序列化漏洞,我们采取的办法是手动升级到了1.2.6版本,但苦于无法验证是否解决了问题,后来发现了一款测试工具,ShiroExploit。 测试工具下载地址 ... 反序列化漏洞是如何产生的?...

    shiro动态URL权限控制

    然后,你需要创建一个`ShiroFilter`配置,定义Shiro过滤器链,这是Shiro控制URL访问的核心部分。在`web.xml`或Spring Boot的配置文件中,你会看到类似下面的配置: ```xml &lt;filter-name&gt;shiroFilter ...

    对应本博客:shiro、基于url权限管理章节的源代码

    2. **URL权限映射**:在Shiro配置文件中,可以将URL与权限进行映射,例如`/admin/* = roles[admin]`表示访问以`/admin/`开头的所有URL都需要`admin`角色。 3. **动态权限分配**:Shiro支持在运行时动态地分配权限,...

    Apache shiro 1.13.0源码

    在 web 应用中,可以通过配置 `shiro.ini` 或者 `Web.xml` 来定制过滤器。 6. **Caching**:Shiro 支持缓存管理,可以缓存认证和授权信息,提高性能。 7. **Testing**:源码中包含了测试用例,帮助开发者理解和...

    shiro1.7.1.zip

    在标签中提到了“shiro兼容包”,这通常指的是为了保证与旧版本系统兼容,或者解决特定环境下的问题,Shiro提供的额外支持包。在升级过程中,如果遇到兼容性问题,这些包可能非常有用。同时,提到了“权限绕过漏洞 ...

    SpringBoot + Apache Shiro1.9.1 最新版本详细教程,基于RBAC角色访问、安全管理框架、用户角色权限

    4、优点:快速上手、全面支持验证、授权、加密和会话、灵活自定义设计、支持web环境、可以无缝集成spring等优点。可以用来用户验证、用户授权、用户session管理、安全加密等 5、基于RBAC五张表:用户表 tb_user、...

    Apache_Shiro_使用手册(一)Shiro架构介绍

    Apache Shiro 是一款功能强大且易于使用的 Java 安全框架,它提供了多种安全相关的功能和服务,包括但不限于认证、授权、加密和会话管理。相较于其他安全框架,Shiro 在设计上更为简洁明了,便于开发者的理解和使用...

    shiro 配置文件

    然后,我们需要在 `spring-shiro-web.xml` 文件中配置 Shiro 的 Filter Chain Definition,定义哪些 URL 应该被哪个 Filter 处理。例如: ```xml &lt;bean id="shiroFilter" class="org.apache.shiro.spring.web....

    shiro-all-1.2.1.jar

    shiro是apache提供的强大而灵活的开源安全框架,它主要用来处理身份认证,授权,企业会话管理和加密。 shiro功能:用户验证、用户执行访问权限控制、在任何环境下使用session API,如cs程序。

Global site tag (gtag.js) - Google Analytics