acegi security實踐教程—訪問系統中資源前必須登陸系統
阿新 • • 發佈:2018-11-01
問題:
處於安全形度,訪問本系統時,是需要登陸才可以訪問其下的資源。根據上篇部落格的除錯,我們發現,若其url在資料庫中沒有沒有配置其角色,則是可以直接訪問其url的。 那為了避免這種情況,我們如何改進自己的系統,進一步接近真實的企業開發呢? 概要: 這節我們將會講到匿名許可權,securitycontext中隨時都包含許可權,而不是隻有登入後才有。 進一步改進上一篇部落格中自定義objectDefinitionSource類,因為若返回null,則直接進入其url。具體開發:
開發環境:
MyEclispe10.7.1+tomcat6.0.37+acegi1.0.5+spring2.0+jdk1.6【其中資料庫和資料結構保持不變】
專案目錄如下:
其中readme主要用來記錄本次驗證目的
配置匿名Filter:
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,
anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
</value>
</property>
</bean>
<!--匿名過濾器 -->
<bean id="anonymousProcessingFilter" class="org.acegisecurity.providers.anonymous.AnonymousProcessingFilter">
<!-- 其中key隨意提供一個名字即可,但是必須提供,類似使用者名稱 -->
<property name="key" value="test"></property>
<!-- userAttribute提供了其密碼和相應的角色 -->
<property name="userAttribute" value="testpwd,ROLE_ANONYMOUS"></property>
</bean>