由于Shiro filterChainDefinitions中 roles默认是and,
/** = user,roles[system,general]
比如:roles[system,general] ,表示同时需要“system”和“general” 2个角色才通过认证
所以需要自定义 继承 AuthorizationFilter
public class RolesAuthorizationFilter extends AuthorizationFilter{ @Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { 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; } for(int i=0;i<rolesArray.length;i++){ if(subject.hasRole(rolesArray[i])){ return true; } } return false; } }
xml中配置如下:
<!-- Shiro Filter --> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/login" /> <property name="successUrl" value="/success" /> <property name="filters"> <map> <entry key="anyRoles" value-ref="anyRoles"/> </map> </property> <property name="filterChainDefinitions"> <value> /login = authc /login/logout = anon / = anon /XXX/** = user,anyRoles[system,general] /TTT = role[system] /** = user </value> </property> </bean> <!--自定义的Roles Filter--> <bean id="anyRoles" class="com.jianfei.p.web.common.RolesAuthorizationFilter" />
注意:/XXX/** = user,anyRoles[system,general], 注意红色的"anyRoles"一定要和
<entry key="anyRoles" value-ref="anyRoles"/> key一样就行,否则过滤器不起作用
相关推荐
本实例将通过自定义Realm来演示如何使用Shiro从数据库中查询数据进行用户验证。 首先,我们需要了解 Realm 的基本概念。在Shiro中, Realm 是一个接口,它实现了认证和授权的功能。默认的 Realm 类型包括 JdbcRealm...
在这个项目中,我们主要关注的是“Shiro登录授权认证功能”。 **身份验证(Authentication)** 身份验证是确认用户身份的过程,通常涉及用户名和密码的验证。在Shiro中,可以通过实现自定义的`Realm`类来对接自己的...
在Shiro中,我们可以创建自定义的角色,并将它们分配给用户。这使得我们可以灵活地控制不同用户可以访问的资源。 1. **角色定义**:在Shiro中,通过`Role`接口定义角色,你可以创建一个实现了此接口的类来代表你的...
SSM整合Shiro实现角色权限是一项常见的Web应用安全实践,主要目的是为了实现用户登录认证、权限控制以及会话管理等功能。SSM框架是由Spring、Spring MVC和MyBatis三个组件组成的,而Apache Shiro则是一个强大且易用...
这个"shiro认证及授权demo"应该包含了设置Shiro环境、配置 Realm、创建 SecurityManager、定义用户角色和权限以及处理登录、登出等核心功能的示例代码。 1. **Shiro环境设置**:首先,需要在项目中引入Shiro的依赖...
综上所述,Apache Shiro提供了全面的身份认证和授权机制,通过角色和权限的组合,可以轻松实现复杂的安全控制策略。在实际开发中,结合Shiro提供的API和配置,我们可以构建出高效且安全的应用系统。对于初学者,理解...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"Shiro 权限认证以及授权demo"中,我们将深入理解Shiro的核心概念,并通过实际...
如果不自定义缓存,Shiro 将不会对认证和授权结果进行缓存,这意味着每次请求都会重新进行认证和授权操作,可能会影响应用性能。 5. **默认缓存实现**:Shiro 内置了一个基于内存的简单缓存管理器...
4. ** 集成自定义Realm**:在应用启动时,Shiro会自动发现并使用配置中的Realm来处理认证和授权请求。确保在应用程序启动后,Shiro能够正确地加载和使用这个自定义Realm。 5. ** 测试和调试**:创建一个测试用例,...
在这个项目中,你得到了一个基于 Shiro 的安全登录认证和权限授权的封装模块代码。这个模块可能已经被集成到 SpringBoot 和 MyBatis 框架中,使得在 SpringBoot 应用中轻松实现用户的身份验证和权限控制。 1. **...
在这个名为“用于测试shiro中自定义Realm的测试代码”的项目中,我们主要关注的是如何自定义Realm来适应特定的认证和授权需求。 Realm在Shiro中扮演着核心角色,它是Shiro与应用程序特定的安全存储(如数据库、...
在本篇文章中,我们将详细介绍如何在 SpringBoot 项目中配置自定义密码加密器代码实例,使用 Shiro 框架来实现身份认证和授权管理。Shiro 框架提供了一个灵活的安全管理系统,可以满足各种应用场景的需求。 Shiro ...
比如,Shiro可以通过自定义Realm实现,针对每个表创建一个Realm,每个Realm处理特定表中的用户认证。 4. **集成OAuth2和Shiro**:一旦用户通过Shiro认证,OAuth2的授权服务器会接收到认证成功的信息,然后生成一个...
0、重点!重点!...1、本教程适用所有开发人员简单易懂,结合文章教程与demo示例。...5、基于RBAC五张表:用户表 tb_user、角色表tb_role、权限表tb_permission、用户角、表tb_user_role、角色权限tb_role_permissio
Apache Shiro 是一个强大且易用的 Java 安全框架,提供了认证、授权、加密和会话管理功能,可以非常方便地开发出足够安全的应用。本文将深入探讨 Shiro 的核心概念,包括认证和授权,并结合提供的 `shiro-demo` 代码...
本文档主要介绍Shiro认证的基本流程以及如何使用Shiro进行用户登录和退出操作。 首先,Shiro认证的过程可以简单概括为以下步骤: 1. 用户向应用程序提供其身份凭证,如用户名和密码。 2. 应用程序将这些凭证传递给...
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理功能,简化了开发人员在构建安全应用程序时的复杂性。在这个项目中,我们将探讨如何实现 Shiro 认证授权的基本过程,以及与...
2. **自定义 Realm 类**:继承自Shiro的AuthorizingRealm,重写doGetAuthenticationInfo()和doGetAuthorizationInfo()方法,从数据源中获取并处理认证和授权信息。 3. **登录控制器**:接收用户登录请求,创建...
- 配置Shiro Realm,自定义UserRealm,实现AuthenticationInfo、AuthorizationInfo接口,对接数据库进行身份和权限的查询。 - 配置SecurityManager,设置Realm,以及会话和缓存的相关策略。 - 在Spring配置文件中...
实际项目中,我们通常会结合Spring Boot使用Shiro,通过定义自定义Realm实现用户认证,使用注解或配置文件完成权限控制。例如,我们可以创建一个`MyRealm`类继承`AuthorizingRealm`,重写`doGetAuthenticationInfo`...