`

shiro 控制一个url多个角色都可以访问

阅读更多
关于shiro控制一个url可以多个角色访问,
我看到这样一个说法:
第一,就是要这写些个用户拥有这些全部角色,因为如果url后面有多个角色,那么就是要同时拥有这些角色才能访问,
第二,就是重写
    @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


你可以看一下org.apache.shiro.web.filter.authz.RolesAuthorizationFilter的源码,然后自己实现一个支持or关系的,而不是and关系的filter,具体,只要匹配任意一个角色就返回true,而不是之前的hasAllRoles才返回true,如果你是用spring的话,然后在spring的配置文件里配置一下类似这样的 <bean id="roleOrFilter" class="XXXX.YYYY.ZZZZ.RolesOrAuthorizationFilter">
</bean>
最后配置的时候用这样的格式:

"/orgemp/** = authc,roleOrFilter["11,12"] 
分享到:
评论

相关推荐

    shiro角色管理框架讲解

    例如,你可以配置一个过滤器链来拦截所有请求,只有具有特定角色的用户才能访问特定URL。 5. **会话管理**:Shiro还提供了强大的会话管理功能,可以跨多个请求跟踪用户的会话状态。默认情况下,Shiro会话数据存储在...

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

    每个URL都可以关联一个或多个角色,只有拥有相应角色的用户才能访问该URL。 1. **Filter Chain定义**:Shiro的Filter Chain定义了URL与安全相关的Filter的映射。例如,`/admin/**`可能被配置为需要`admin`角色的...

    用url作为shiro的permission的范例

    是用菜单URL作为shiro的permission来管理,每一个用户分配其角色(可以有多个角色),这个系统要求必须登录才能使用,如果是对外的公开项目就不合适,shiro一般也是用在需要控制权限的项目. 每个角色分配其可以访问...

    安全控制框架教程shiro

    它涵盖了认证、授权、会话管理和加密等多个关键领域,使得开发者能够轻松地实现用户身份验证、权限控制以及安全设置。本教程主要关注Shiro的基本使用,旨在帮助开发者快速上手并将其集成到自己的项目中。 ### 1. ...

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建+源代码+文档说明

    一个用户具有一个角色,或者多个角色 2 . 一个角色具有一个权限,或者多个权限 3 . 权限可以访问对应的api,或者url资源等等。 基本实现 : 1 . 用户登入登出 2 . 基于权限控制访问api或者url资源。 #### 2 ...

    vue+element+springboot+shiro权限控制

    在SpringBoot应用中,Shiro 可以与Spring的AOP机制结合,实现细粒度的权限控制,如URL级别的访问权限。 在这个架构中,Vue.js 和 Element UI 负责前端展示和交互,用户登录、权限相关的操作通过Ajax请求发送到后端...

    shiro 内存模型分析

    `appliedPaths` 是每个 Filter 对象的一个属性,它是一个 Map 集合,存储了 URL 在被该过滤器处理时所使用的参数(String[])。这些参数通常用于定制过滤器的行为,例如在 `perms` 过滤器中,参数可以是用户需要具备...

    ssm+shiro实现权限框架

    综上所述,"ssm+shiro实现权限框架"是一个综合运用Spring、SpringMVC、MyBatis和Apache Shiro的权限管理系统,它涵盖了用户认证、授权、会话管理等多个安全环节。通过合理配置和开发,可以有效地控制不同用户对系统...

    springboot+shiro+layuimini实现后台管理系统的权限控制

    2. **授权**:Shiro支持基于角色的访问控制(RBAC),可以灵活地定义用户角色及权限,如URL拦截、方法级别的权限控制等。 3. **会话管理**:Shiro可以统一管理会话,包括会话超时、分布式会话等,提高系统的安全性。...

    cas +shiro集成

    4. Shiro的授权:Shiro提供了基于角色的访问控制(RBAC),你可以定义角色和权限,并在Shiro配置中指定哪些URL或操作需要特定的角色权限。Shiro的过滤器链可以实现这些控制。 5. 会话管理:Shiro可以管理用户的会话...

    springboot-shiro

    通常,一个用户可以拥有多个角色,每个角色包含一组权限。权限可以细分为操作资源的权力,例如“查看”,“编辑”,“删除”等。在Shiro中,可以通过定义Permission对象来表示这些权限,并在数据库中存储角色与权限...

    shiro权限(1)

    - **基于角色的访问控制**:用户被赋予不同的角色,每个角色对应一组权限。 - **基于权限的访问控制**:用户直接被赋予具体的权限,而不是通过角色间接获得权限。 #### 三、Shiro与企业Web项目的整合开发 在企业级...

    shiro:shiro基于url做的权限系统

    3. **访问控制决策**: 当用户请求一个URL时,Shiro会检查用户是否已经登录以及是否具有相应的角色或权限。如果满足条件,允许访问;否则,重定向到登录页面或返回错误信息。 **三、Shiro的认证与授权** 1. **认证**...

    shiro基础jar包

    6. **Filter 集成**:Shiro 可以通过 Filter 集成到 Web 应用中,如 AuthenticatingFilter 和 AuthorizingFilter,实现基于 URL 的访问控制。 7. **Session 管理**:包括 SessionDAO(用于持久化会话)、Session...

    springBoot2.0+mybatis支持多数据源+shiro

    4. **流程完善**:虽然描述中提到shiro的权限流程还需完善,这意味着可能需要实现更复杂的权限控制,例如角色、权限动态分配、细粒度的URL权限控制、基于注解的权限控制等。这通常涉及到权限的动态加载、更新以及在...

    cas结合 springmvc shiro 单点登录

    在IT行业中,单点登录(Single Sign-On, SSO)是一种常见的身份验证机制,它允许用户在一个系统上登录后,无需再次认证即可访问其他多个相互信任的系统。本项目是关于如何将CAS(Central Authentication Service)与...

    跟我学Shiro

    Shiro 提供了基于角色的访问控制(RBAC),可以对资源(如 URL、方法等)进行细粒度的权限管理。你可以使用注解、配置文件或代码来定义角色和权限。 4. **会话管理(Session Management)** Shiro 可以管理跨多个...

    我的shiro源码.zip

    Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、会话管理和加密等功能,使得在Java应用程序中实现安全控制变得简单。在这个"我的shiro源码.zip"压缩包中,包含的是一个整合了Spring(SSM框架的一...

Global site tag (gtag.js) - Google Analytics