0 0

shiro 同一URL配置多个角色的问题20

我发现在配置文件中,对同一个URL配置多个角色貌似不能配置,如下:
1,
/adminUser/** = roles[admin]
/adminUser/** = roles[test]
这种情况只能对角色test有效
2,
/adminUser/** = roles[admin,test]
或者/adminUser/** = roles["admin,test"]
这种情况也只能对test有效
3,
/adminUser/** = roles[admin],roles[test]
这种情况需要用户拥有二个角色时才有效,

求配置方法

1个答案 按时间排序 按投票排序

0 0

public class RolesAuthorizationFilter extends AuthorizationFilter {

    //TODO - complete JavaDoc

    @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 true;
        }

        Set<String> roles = CollectionUtils.asSet(rolesArray);
        return subject.hasAllRoles(roles);
    }

}

是and逻辑 即必须匹配所有角色,你可以自己写个filter 改成or

2013年3月23日 11:11

相关推荐

    shiro实现单点登录(一个用户同一时刻只能在一个地方登录)

    单点登录是一种常见的安全机制,它允许用户在一次登录后访问多个相互关联的应用系统,而无需重新认证。在 Shiro 中,实现单点登录主要是通过控制用户的会话(Session)来完成的。以下是一个简单的步骤概述: 1. **...

    spring boot+shiro+mybatis实现不同用户登录显示不同的权限菜单

    当用户登录时,Shiro会验证其凭证,然后根据用户角色和权限设置,动态生成并显示相应的菜单。 **MyBatis** MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在本项目中,MyBatis与Spring ...

    shiro中session的共享问题与完成前后端权限的校验

    在分布式系统中,由于多个服务器可能处理同一个用户的请求,这就涉及到Session的共享问题。Shiro提供了一种解决策略,即通过SessionManager和SessionDAO来实现跨服务器的Session共享。可以配置如Redis或Memcached...

    浏览器多窗口共用session引发的混乱

    然而,当用户在同一个浏览器的多个窗口或标签页中并行操作时,如果这些窗口都访问了同一个网站,浏览器可能会将所有窗口共享同一个Session ID。这意味着,窗口间的数据交互、操作状态可能会互相影响,导致数据混乱,...

    Shiro教程.pdf

    - **AuthenticationStrategy**:认证策略,定义如何处理多个Realm的认证结果。 #### 三、授权 - **授权**是基于用户身份分配权限的过程。 - **授权方式**: - 基于角色的访问控制(RBAC)。 - 基于权限的访问...

    SpringBoot整合Shiro

    2. **配置Shiro**:创建`shiro.ini`或`shiro.yml`文件,配置Shiro的安全规则,如用户的权限、角色等。也可以通过Java配置类来配置。 3. **编写过滤器链**:在SpringBoot的配置类中,定义Shiro的Filter Chain,指定...

    SSM整合shiro入门

    Shiro是一个强大且易用的Java安全框架,处理认证、授权、会话管理和并发控制等多个安全相关问题。在本项目中,SSM与Shiro的整合不仅提供了基础的安全管理功能,还额外实现了验证码验证、并发登录限制以及密码加密等...

    Shiro开发文档

    - AuthenticationStrategy 决定如何处理多个 Realm 的认证结果。 #### 三、授权(Authorization) - **概念**:授权是指验证用户是否具有执行特定操作的权限。 - **实现**: - **授权方式**:可以是基于角色的...

    SpringBoot与Shiro整合-权限管理的简单权限系统.zip

    5. **会话管理**:Shiro还负责管理用户的会话状态,例如记录用户登录后的活动,防止同一用户在同一时间内在多个设备上登录等。 项目可能包含以下主要模块: - **用户模块**:负责用户注册、登录、修改密码、找回...

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    3. **Filter链**:多个`Filter`可以串联形成一个`Filter Chain`,按照配置顺序逐个执行。 **二、权限访问控制** 1. **认证与授权**:首先,我们需要一个登录页面让用户输入凭证(如用户名和密码)。认证成功后,...

    基于SpringBoot+Layui搭建的学生管理系统,融合shiro安全框架和Ehcache缓存框架.zip

    2. **安全过滤器**:配置Shiro Filter Chain,指定哪些URL需要经过哪些过滤器。 3. **会话管理**:设置session超时、分布式会话等策略。 集成Ehcache涉及以下内容: 1. **引入依赖**:在pom.xml中添加Ehcache的...

    Shiro 控制并发登录人数限制及登录踢出的实现代码

    关键在于能够跨多个服务器实例保持会话状态。 总结来说,通过 Shiro 的自定义 Filter 和会话管理,我们可以有效地限制一个账号的并发登录,并在检测到新的登录尝试时踢出之前的会话。这个功能对于保护用户数据安全...

    shiro并发人数登录控制的实现代码

    测试时,你可以打开多个浏览器(确保使用不同的浏览器,例如 IE、Chrome 和 Firefox),分别访问应用的登录页面(如 http://localhost:8080/chapter18/)。当超过最大并发登录数时,最早的登录用户会被强制登出,...

    管理系统系列--一个java版本的基于角色的权限管理系统.zip

    这种设计可以方便地进行权限管理,例如,当需要给多个用户分配相同权限时,只需为他们分配同一角色即可。此外,通过调整角色的权限设置,可以轻松地实现权限的增删改查,提高了系统的安全性。 在Java中实现RBAC系统...

    2021年开发就业面试问题-精简版x_2020教资面试成绩

    并发是指多个用户在同一时间对同一数据进行读写操作。并发问题的核心在于如何协调读写操作,避免数据冲突。解决并发问题的方法包括: - **读写分离**:将读操作和写操作分配到不同的服务器,减少冲突。 - **配置缓存...

    Spring Boot mybatis plus layui 企业后台管理平台

    本项目使用 Spring Boot 搭建, 用于加深对 Spring Boot 与 Shiro 的学习, 项目特色是支持 restful 风格权限控制, 支持对同一 URL, 不同 HTTP Mehtod 的权限控制, 适用于更多的场景. 预览地址: http://ewt.186g.cn ...

    Geoserver跨域问题解决方案

    在IT行业中,尤其是在Web开发领域,跨域问题是一个常见的挑战,尤其当涉及到GIS(地理信息系统)服务时,如Geoserver。Geoserver是一个开源的、基于Java的服务器,用于发布和管理地理空间数据。当从一个源(如浏览器...

    SpringMVC权限项目

    综上所述,"SpringMVC权限项目"是一个涵盖多个技术层面的综合性任务,涉及到身份验证、授权、角色权限分配、会话管理、异常处理等多个关键环节,旨在构建一个安全、可控的Web应用环境。通过熟练掌握这些知识点,...

    JAVA技术架构及开发规范文档.docx

    Shiro与CAS单点登录整合,便于扩展多个应用模块。此外,自定义了UsernamePasswordToken和Realm,实现基于验证码和数据库用户密码的登录验证。 Spring的注解控制器用于控制器层,支持返回Velocity视图、Ajax JSON和...

Global site tag (gtag.js) - Google Analytics