1.web.xml中加載spring ,spring securityjava
2.spring security配置文件中配置好....web
3.本身寫一個myFilter代替原有的FilterSecurityInterceptor過濾器,並分別實現AccessDecisionManager、spring
InvocationSecurityMetadataSourceService和UserDetailsService.以下:數據庫
<beans:bean id="myFilter" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">框架
<beans:property name="authenticationManager"ide
ref="authenticationManager" />加密
<beans:property name="accessDecisionManager"url
ref="myAccessDecisionManager" />code
<beans:property name="securityMetadataSource"xml
ref="securityMetadataSource" />
</beans:bean>
4.配置上面的3個bean,具體以下:
4.1 認證管理器 即:是否能夠登陸(包括是否鎖定了,是否過時了等....)
<authentication-manager alias="authenticationManager">
<authentication-provider
user-service-ref="myUserDetailService">
<!-- 若是用戶的密碼採用加密的話
<password-encoder hash="md5" />
-->
</authentication-provider>
</authentication-manager>
4.2決策管理器 即:是否有權限訪問資源
<beans:bean id="MyAccessDecisionManager"
class="org.springframework.security.access.vote.AffirmativeBased"
<beans:property name="decisionVoters">
<beans:list>
<beans:bean class="org.springframework.security.access.vote.RoleVoter">
<!-- 將受權名稱的默認前綴由ROLE_改成空. -->
<beans:property name="rolePrefix" value=""></beans:property>
</beans:bean>
<beans:bean class="org.springframework.security.access.vote.AuthenticatedVoter"></beans:bean>
</beans:list>
</beans:property>
</beans:bean>
4.3 受權處理器 即定義某一資源能夠被哪些用戶組訪問
<beans:bean id="securityMetadataSource"
class="com.aostarit.spring.security.MyInvocationSecurityMetadataSource" />
注意,4.3表示直接利用默認的受權處理器,它會從配置文件中讀取group-->resource的對應關係,而非從數據庫讀取! 因此還需給告訴他初始化的時候用以下兩個參數:
<b:constructor-arg type="org.springframework.security.web.util.UrlMatcher"
ref="myUrlPathMatcher" />
<!-- url對應authority的map -->
<b:constructor-arg type="java.util.LinkedHashMap"
ref="requestMap" />
既然如此,咱們乾脆本身寫一個類得了,不用框架提供的類了.implements FilterInvocationSecurityMetadataSource 便可. 具體見資料.
4.1.1
真正幹事的實際上是這個myUserDetailService,他要實現UserDetailsService接口,
這個接口中的方法:public UserDetails loadUserByUsername(String username)真正幹事,<!--再調用什麼dao層我就無論了,呵呵-->
注意咯:返回的 UserDetails,咱們返回一個實現了 UserDetails接口的類A便可.
注意咯:A還有兩個特色,①.她裏面的數據就是從數據庫讀出來的數據,好比username,password,她無論頁面提交的password的. 到底是怎麼驗證密碼的,這個要找框架自己了.②.他的權限set的時候還有點小技巧,這個見個人項目的SecurityUser裏的setAuthorities(List<Object[]> l)方法.
<beans:bean id="myUserDetailService" class="com.aostarit.spring.security.MyUserDetailService" >
<beans:property name="securityDao" ref="securityDao"></beans:property>
</beans:bean>
****securityDao,這個本身寫咯......本身配咯.....