SpringSecurity 自定义用户 角色 资源权限控制
2016-02-21 23:41
513 查看
SpringSecurity 自定义用户 角色 资源权限控制
spring-security.xml
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"> <http access-denied-page="/403" auto-config="false"><!-- 当访问被拒绝时,会转到403.jsp --> <intercept-url pattern="/login" filters="none" /> <form-login login-page="/login" authentication-failure-url="/login?error=true" default-target-url="/index"/> <logout logout-success-url="/login" /> <!-- 增加一个filter,这点与Acegi是不一样的,不能修改默认的filter了,这个filter位于FILTER_SECURITY_INTERCEPTOR之前 --> <custom-filter before="FILTER_SECURITY_INTERCEPTOR" ref="myFilter" /> </http> <!-- 认证管理器,实现用户认证的入口,主要实现UserDetailsService接口即可 --> <authentication-manager alias="authenticationManager"> <authentication-provider user-service-ref="myUserDetailService"> <!-- 如果用户的密码采用加密的话,可以加点“盐” <password-encoder hash="md5" /> --> </authentication-provider> </authentication-manager> <!-- 一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,我们的所有控制将在这三个类中实现,解释详见具体配置 --> <beans:bean id="myFilter" class="com.joyen.learning.security.MyFilterSecurityInterceptor"> <beans:property name="authenticationManager" ref="authenticationManager" /> <beans:property name="accessDecisionManager" ref="myAccessDecisionManagerBean" /> <beans:property name="securityMetadataSource" ref="securityMetadataSource" /> </beans:bean> <beans:bean id="myUserDetailService" class="com.joyen.learning.security.MyUserDetailService"> <beans:property name="dataSource" ref="dataSource"></beans:property> <beans:property name="usersByUsernameQuery" value="select username,password,email,enabled from user where username = ?"></beans:property> <beans:property name="authoritiesByUsernameQuery" value="SELECT u.username,r.name FROM user u,roleuser ru, role r WHERE u.id = ru.userid AND ru.roleid = r.id AND u.username = ?"></beans:property> </beans:bean> <!-- 访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源 --> <beans:bean id="myAccessDecisionManagerBean" class="com.joyen.learning.security.MyAccessDecisionManager"> </beans:bean> <!-- 资源源数据定义,即定义某一资源可以被哪些角色访问 --> <beans:bean id="securityMetadataSource" class="com.joyen.learning.security.MyInvocationSecurityMetadataSource"> <beans:constructor-arg ref="dataSource"></beans:constructor-arg> <beans:constructor-arg type="java.lang.String" value="select rce.url, r.name from role r inner join roleresource rrce on r.id = rrce.roleid inner join resource rce on rrce.resourceid = rce.id"></beans:constructor-arg> </beans:bean> </beans:beans>
spring-security.xml
相关文章推荐
- 从头认识Spring-3.3 简单的AOP日志实现-增加检查订单功能
- JAVA语法基础
- [java]_[线程池的使用]
- Java小笔记
- 从头认识Spring-3.2 简单的AOP日志实现-需要记录方法的运行时间
- springIOC
- Java对象序列化追加的问题,以及Java的读取多个对象的问题解决方法。
- Spring基于jdbcTemplate对数据库的操作
- 全面复习之 java IO整理练习
- 从头认识Spring-3.1 简单的AOP日志实现-某方法之前的前后记录日志
- 全面复习之 java IO流总结
- java URL
- window eclipse 开发hbase程序 绑定master不成功,解决办法
- java中的多线程安全问题
- Eclipse自动打包教程
- Java特性学习
- java 多线程 CountDownLatch用法
- java基础之数组常见问题分析
- springmvc与struts2的区别
- 数据库体系结构-共享池(shared pool),largepool,Java池,流池