以後可能要涉及到Spring Security ,在網上找資料挺多,因爲第一次弄,搞的我看到後忘了前面,最後看了官方的tutorial,參考後研究出了
最基本的使用方法,暫時不去考慮高級用法,Spring Security使用了AOP思想,所以對安全方面使用起來很方便,加去自如。
我看了下通過提供role和auth,於url和method上提供許多驗證機制(Provider),驗證數據可以基於SQL或是LDAP等,
我寫了下一個簡單的基本配置的用戶登錄應用使用ss2(Spring Security 2進行了包裝,使配置更加簡化):
一.加載Spring security Filter
二.配置Security Information
下面詳細講解:
1.導入spring所需jar包,和spring security 2所需jar , 從官方下載後從裏面tutorial的lib裏拷就行了
2.配置web.xml:
3.配置applicationContext-security.xml
參考tutorial裏的文件作一些修改
主要講一下<http>的內容
<http auto-config="true">
<intercept-url pattern="/login.jsp*" filters="none"/>
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/index.jsp" />
<logout logout-success-url="/login.jsp"/>
<concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="true"/>
</http>
首先看 auto-comfig這個東東,把這個設成true,系統會自己加上以下內容
<form-login />
<anonymous />
<http-basic />
<logout />
<remember-me />
這些東西,我這裏自己寫了一些,那麼就會覆蓋默認的設置,
<intercept-url /> : 用來告訴ss2哪些url不用Filter去處理了
<form-login/> :去定義一些關於表單的頁面文件
<concurrent-session-control /> :就是控制登錄次數了
<authentication-provider/>
這裏就是設置驗證信息了,你可以從數據庫取得:
<authentication-provider>
<jdbc-user-service data-source-ref="securityDataSource"/>
</authentication-provider>
這裏的"securityDataSource"就是 DataSource bean在application context裏的名字,它指向了包含着Spring Security用戶信息的表。 另外,你
可以配置一個Spring Security JdbcDaoImpl bean,使用user-service-ref屬性指定:
<authentication-provider user-service-ref='myUserDetailsService'/>
<beans:bean id="myUserDetailsService" class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
<beans:property name="dataSource" ref="dataSource"/>
</beans:bean>
<password-encoder hash="md5"/> :是密碼加密機制還還其它的, 如:sha
如果是自定義userdetail的話要自己實現UserDetail和UserDetailService兩個接口,告訴ss2如何取得
像上面定義的 用戶名和密碼 代碼如下:
實現UserDetailService Interface
我直接設置了值,當然可以從數據庫等地方去獲取User
實現UserDetail Interface:
getAuthorities()裏的autorities 可以從其它你想要的地方獲取
如果是上面這種方式的話,applicationContext-security.xml裏我要加下面的東西:
以前的直接設置帳號的可以comment掉了{
<!--
<authentication-provider>
<password-encoder hash="md5"/>
<user-service>
<user name="rod" password="a564de63c2d0da68cf47586ee05984d7" authorities="ROLE_SUPERVISOR, ROLE_USER, ROLE_TELLER" />
<user name="dianne" password="65d15fe9156f9c4bbffd98085992a44e" authorities="ROLE_USER,ROLE_TELLER" />
<user name="scott" password="2b58af6dddbd072ed27ffc86725d7d3a" authorities="ROLE_USER" />
<user name="peter" password="22b5c9accc6e1ba628cedc63a72d57f8" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
-->
}
以上配置只是最基本的配置,一些高級web特性先沒有弄,一步一步來嘛!從簡單入手.
4.創建頁面
首先 login.jsp
注意:要用ss2的功能表單書寫上有講究:
form的action要到 j_spring_security_check
username和password的name分別爲:j_username j_password
其次 index.jsp (登錄通過後到的頁面)
這裏退出要到: j_spring_security_logout
這樣就會按照你配置信息去work了.
好這就是一個最最簡單的應用ss2了.