`
ailongni
  • 浏览: 61213 次
  • 性别: 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  
搞了半天没起作用,原来文件里要这么写,受教了。

相关推荐

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

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

    单点登录sso-shiro-cas-maven

    -- 认证通过后的默认角色 --&gt; &lt;!-- cas服务端地址前缀 --&gt; ${shiro.cas.serverUrlPrefix}" /&gt; &lt;!-- 应用服务地址,用来接收cas服务端票据 --&gt; ${shiro.cas.service}" /&gt; &lt;!-- Shiro's main business-...

    Java-Shiro学习思维导图.zip

    学习如何自定义 Realm 来实现不同的身份认证方式。 授权: 理解授权的概念和权限管理。 学习如何定义权限字符串和角色。 了解如何通过 Shiro 进行权限检查和访问控制。 会话管理: 理解会话管理的目的和流程。 ...

    springboot与shiro密码加密,mybatis,redis的整合项目

    后台在通过shiro进行授权和认证,分为普通用户和管理员两种角色,普通用户只能访问商品,管理员可以访问商品和用户界面的基础上加入了密码加密。登录时利用了redis缓存。里面包含数据库文件希望能帮助到大家学习。

    Shiro最新全套在线教程(1.74G)

    03.使用ini完成认证.avi 04.shiro登录登出流程分析.avi 05.自定义realm登录登出.avi 06.加密realm登录登出.avi 07.RBAC权限模型理解.avi 08.ini方式检查用户拥有角色.avi 09.ini方式检查用户拥有权限.avi 10.自定义...

    基于RBAC(用户-角色-资源)关注于对API的安全保护,无特定Web框架依赖的一个认证鉴权框架,面向RESTAPI 的认证鉴权

    Sureness 是我们在深度使用 Apache Shiro 之后,吸取其优点全新设计开发的一个认证鉴权框架,面向 REST API 的认证鉴权,基于 RBAC (用户-角色-资源)主要关注于对 API 的安全保护,无特定Web框架依赖(已有 SpringBoot,...

    面向REST API的高性能认证鉴权框架,致力于管理保护API安全

    Sureness 是我们在深度使用 Apache Shiro 之后,吸取其优点全新设计开发的一个认证鉴权框架。面向 REST API 的认证鉴权,基于 RBAC (用户-角色-资源)主要关注于对 API 的安全保护。无特定Web框架依赖。无特定Web框架...

    bootshiro权限管理系统-其他

    bootshiro是基于springboot+shiro+jwt的真正restful URL资源无状态认证权限管理系统的后端,前端usthe。区别于一般,提供页面可配置式的,动态的 restful api 安全管理支持。数据传输动态秘钥加密,jwt过期刷新,...

    shiro-base:结尾

    Shiro认证过程 创建SecurityManager 主体提交认证 SecurityManager认证 Authenticator认证 Realm获取角色权限数据 Realm 内置Realm: IniRealm JdbcRealm 自定义realm Shiro加密 Shiro散列配置 ...

    容灾项目从入门到实战视频.rar

    │ 104-在切面中获取自定义注解-1.mp4 │ 105-完善通知类-1.mp4 │ 106-druid监控中心的配置-1.mp4 │ 11-逻辑语句-1.mp4 │ 12-计算属性-1.mp4 │ 13-使用class绑定样式-1.mp4 │ 14-使用style绑定样式-1.mp4 │ 15...

    SSM_systemDemo:VNDais 作业管理系统,SSM,React,IEC,Maven,REST,JWT

    系统简介 VNDais 作业管理系统,用户类型为管理员、教师和学生,提供的功能也是围绕用户展开。 系统开发技术介绍 前端 飞冰(ICE) ...RBAC(Role-Based Access Control )基于角色的访问控制 整合富文本

    单点登录源码

    | ├── zheng-upms-client -- 集成upms依赖包,提供单点认证、授权、统一会话管理 | ├── zheng-upms-rpc-api -- rpc接口包 | ├── zheng-upms-rpc-service -- rpc服务提供者 | └── zheng-upms-server -- ...

Global site tag (gtag.js) - Google Analytics