`
ailongni
  • 浏览: 62049 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Shiro 自定义角色 认证

    博客分类:
  • java
 
阅读更多

由于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一样就行,否则过滤器不起作用

 

分享到:
评论
1 楼 zxcq06 2015-09-24  
搞了半天没起作用,原来文件里要这么写,受教了。

相关推荐

    从实例入手学习Shiro自定义Realm实现查询数据进行验证示例代码.zip

    本实例将通过自定义Realm来演示如何使用Shiro从数据库中查询数据进行用户验证。 首先,我们需要了解 Realm 的基本概念。在Shiro中, Realm 是一个接口,它实现了认证和授权的功能。默认的 Realm 类型包括 JdbcRealm...

    Shiro登录授权认证功能

    在这个项目中,我们主要关注的是“Shiro登录授权认证功能”。 **身份验证(Authentication)** 身份验证是确认用户身份的过程,通常涉及用户名和密码的验证。在Shiro中,可以通过实现自定义的`Realm`类来对接自己的...

    shiro角色管理框架讲解

    在Shiro中,我们可以创建自定义的角色,并将它们分配给用户。这使得我们可以灵活地控制不同用户可以访问的资源。 1. **角色定义**:在Shiro中,通过`Role`接口定义角色,你可以创建一个实现了此接口的类来代表你的...

    SSM整合shiro实现角色权限

    SSM整合Shiro实现角色权限是一项常见的Web应用安全实践,主要目的是为了实现用户登录认证、权限控制以及会话管理等功能。SSM框架是由Spring、Spring MVC和MyBatis三个组件组成的,而Apache Shiro则是一个强大且易用...

    shiro认证及授权demo

    这个"shiro认证及授权demo"应该包含了设置Shiro环境、配置 Realm、创建 SecurityManager、定义用户角色和权限以及处理登录、登出等核心功能的示例代码。 1. **Shiro环境设置**:首先,需要在项目中引入Shiro的依赖...

    shiro 权限与角色

    综上所述,Apache Shiro提供了全面的身份认证和授权机制,通过角色和权限的组合,可以轻松实现复杂的安全控制策略。在实际开发中,结合Shiro提供的API和配置,我们可以构建出高效且安全的应用系统。对于初学者,理解...

    shiro 权限认证以及授权demo

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"Shiro 权限认证以及授权demo"中,我们将深入理解Shiro的核心概念,并通过实际...

    shiro-demo不自定义缓存.zip

    如果不自定义缓存,Shiro 将不会对认证和授权结果进行缓存,这意味着每次请求都会重新进行认证和授权操作,可能会影响应用性能。 5. **默认缓存实现**:Shiro 内置了一个基于内存的简单缓存管理器...

    shiro权限框架自定义Realm示例

    4. ** 集成自定义Realm**:在应用启动时,Shiro会自动发现并使用配置中的Realm来处理认证和授权请求。确保在应用程序启动后,Shiro能够正确地加载和使用这个自定义Realm。 5. ** 测试和调试**:创建一个测试用例,...

    Shiro安全登录认证、权限授权封装模块代码

    在这个项目中,你得到了一个基于 Shiro 的安全登录认证和权限授权的封装模块代码。这个模块可能已经被集成到 SpringBoot 和 MyBatis 框架中,使得在 SpringBoot 应用中轻松实现用户的身份验证和权限控制。 1. **...

    用于测试shiro中自定义Realm的测试代码

    在这个名为“用于测试shiro中自定义Realm的测试代码”的项目中,我们主要关注的是如何自定义Realm来适应特定的认证和授权需求。 Realm在Shiro中扮演着核心角色,它是Shiro与应用程序特定的安全存储(如数据库、...

    SpringBoot Shiro配置自定义密码加密器代码实例

    在本篇文章中,我们将详细介绍如何在 SpringBoot 项目中配置自定义密码加密器代码实例,使用 Shiro 框架来实现身份认证和授权管理。Shiro 框架提供了一个灵活的安全管理系统,可以满足各种应用场景的需求。 Shiro ...

    oauth2 shiro 多表认证

    比如,Shiro可以通过自定义Realm实现,针对每个表创建一个Realm,每个Realm处理特定表中的用户认证。 4. **集成OAuth2和Shiro**:一旦用户通过Shiro认证,OAuth2的授权服务器会接收到认证成功的信息,然后生成一个...

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

    0、重点!重点!...1、本教程适用所有开发人员简单易懂,结合文章教程与demo示例。...5、基于RBAC五张表:用户表 tb_user、角色表tb_role、权限表tb_permission、用户角、表tb_user_role、角色权限tb_role_permissio

    shiro认证授权

    Apache Shiro 是一个强大且易用的 Java 安全框架,提供了认证、授权、加密和会话管理功能,可以非常方便地开发出足够安全的应用。本文将深入探讨 Shiro 的核心概念,包括认证和授权,并结合提供的 `shiro-demo` 代码...

    shiro认证.pdf

    本文档主要介绍Shiro认证的基本流程以及如何使用Shiro进行用户登录和退出操作。 首先,Shiro认证的过程可以简单概括为以下步骤: 1. 用户向应用程序提供其身份凭证,如用户名和密码。 2. 应用程序将这些凭证传递给...

    Shiro认证授权的基本实现

    Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理功能,简化了开发人员在构建安全应用程序时的复杂性。在这个项目中,我们将探讨如何实现 Shiro 认证授权的基本过程,以及与...

    shiro认证和授权案例

    2. **自定义 Realm 类**:继承自Shiro的AuthorizingRealm,重写doGetAuthenticationInfo()和doGetAuthorizationInfo()方法,从数据源中获取并处理认证和授权信息。 3. **登录控制器**:接收用户登录请求,创建...

    Java SSM、 shiro开发用户登录权限认证的实例demo

    - 配置Shiro Realm,自定义UserRealm,实现AuthenticationInfo、AuthorizationInfo接口,对接数据库进行身份和权限的查询。 - 配置SecurityManager,设置Realm,以及会话和缓存的相关策略。 - 在Spring配置文件中...

    shiro权限认证和授权

    实际项目中,我们通常会结合Spring Boot使用Shiro,通过定义自定义Realm实现用户认证,使用注解或配置文件完成权限控制。例如,我们可以创建一个`MyRealm`类继承`AuthorizingRealm`,重写`doGetAuthenticationInfo`...

Global site tag (gtag.js) - Google Analytics