首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

SS3中security一部分的学习

2012-09-19 
SS3中security部分的学习研究了一下Springside下面的security部分的代码。其实security主要包括了两部分的

SS3中security部分的学习
研究了一下Springside下面的security部分的代码。其实security主要包括了两部分的内容。
1. 用户十分为合法用户。
2. 用户有哪些权限。
这些内容都是在userDetailsService中实现的。只需要重载这个接口,实现

public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException, DataAccessException

这个方法即可。这个方法会返回用户的基本信息,如名字和密码。还包括用户的具体权限,如A_VIEW_USER,A_MODIFY_USER,A_VIEW_ROLE(这些都是配在数据库中的)等等。

当用户访问一个url的时候,系统会通过
<bean id="databaseDefinitionSource" ref="resourceDetailsService" /></bean>

来确定用户需要哪些权限才能访问这个url。resourceDetailsService可以去数据库中取出这个关系。
当然如果你要把这种关系配到xml里面也是可以的,如下:
<http auto-config="true" access-decision-manager-ref="accessDecisionManager">                <intercept-url pattern="/security/user!save*" access="A_MODIFY_USER" />                <intercept-url pattern="/security/user!delete*" access="A_MODIFY_USER" />                <intercept-url pattern="/security/user*" access="A_VIEW_USER" />                <intercept-url pattern="/security/role!save*" access="A_MODIFY_ROLE" />                <intercept-url pattern="/security/role!delete*" access="A_MODIFY_ROLE" />                <intercept-url pattern="/security/role*" access="A_VIEW_ROLE" />                <form-login login-page="/login.action" default-target-url="/" authentication-failure-url="/login.action?error=true" />                <logout logout-success-url="/" />                <remember-me key="e37f4b31-0c45-11dd-bd0b-0800200c9a66" />        </http>


如果使用用户,角色,权限三层模式,最好把权限的前缀改一改,
<bean id="accessDecisionManager" value="A_" /></bean><bean /></list></property></bean>


下面是完整的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-2.5.xsd                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd"        default-autowire="byType" default-lazy-init="true">        <beans:description>使用SpringSecurity的安全配置文件</beans:description>        <!-- 在此定义URL与授权的关系. 而用户、角色、授权及三者的关系则保存在数据库中. -->        <http auto-config="true" access-decision-manager-ref="accessDecisionManager">                <intercept-url pattern="/security/user!save*" access="A_MODIFY_USER" />                <intercept-url pattern="/security/user!delete*" access="A_MODIFY_USER" />                <intercept-url pattern="/security/user*" access="A_VIEW_USER" />                <intercept-url pattern="/security/role!save*" access="A_MODIFY_ROLE" />                <intercept-url pattern="/security/role!delete*" access="A_MODIFY_ROLE" />                <intercept-url pattern="/security/role*" access="A_VIEW_ROLE" />                <form-login login-page="/login.action" default-target-url="/" authentication-failure-url="/login.action?error=true" />                <logout logout-success-url="/" />                <remember-me key="e37f4b31-0c45-11dd-bd0b-0800200c9a66" />        </http>        <authentication-provider user-service-ref="userDetailsService">                <!-- 可设置hash使用sha1或md5散列密码后再存入数据库 -->                <password-encoder hash="plaintext" />        </authentication-provider>        <beans:bean id="userDetailsService" />        <!-- 将授权的默认前缀由ROLE_改为A_ -->        <beans:bean id="accessDecisionManager" value="A_" />                                </beans:bean>                                <beans:bean />                        </beans:list>                </beans:property>        </beans:bean></beans:beans>



热点排行