1. 程式人生 > >初踏Spring Security 2.x

初踏Spring Security 2.x

 web.xml

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/context/applicationContext.xml,/WEB-INF/context/applicationContext-security.xml
		</param-value>
	</context-param>
	<!-- Spring Security2 配置DelegatingFilterProxy -->
	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>
			org.springframework.web.filter.DelegatingFilterProxy
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

<listener>
      <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
    </listener>

applicationContext-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-2.0.xsd
                        http://www.springframework.org/schema/security 
                        http://www.springframework.org/schema/security/spring-security-2.0.4.xsd">

	<!-- 
		url過濾是按照順序執行的,所以最前面的是最想先過濾的
		1.form-login 指定了登陸介面,如果沒具體指定,spring security將用自身的登陸介面,default-target-url: 登入成功後轉到那個頁面
		2.http-basic 載入系列預設的過濾器
		3.logout 載入離開過濾器, logout-success-url: 登出成功跳轉到的頁面(跳轉)
		4.max-sessions="1": 一個使用者第二次登陸時,第一次失效
		5.exception-if-maximum-exceeded="true": 防止第二次登陸
		6. access-denied-page: 該使用者無許可權時轉到指定頁面(轉向)
	-->
	<http access-denied-page="/AccessDenied.html">		
		<intercept-url pattern="/Login.jsp*" 	filters="none" />
		<intercept-url pattern="/User/**" 		access="ROLE_ADMIN" />
		<intercept-url pattern="/user*" 		access="ROLE_ADMIN" />
		<intercept-url pattern="/Article/**" 	access="ROLE_ADMIN,ROLE_USER" />
		<intercept-url pattern="/art*" 			access="ROLE_ADMIN,ROLE_USER" />
		<intercept-url pattern="/**" 			access="ROLE_ADMIN,ROLE_USER" />
		
		<form-login login-page="/Login.jsp" 	default-target-url="/Success.html"/>		
		<logout logout-success-url="/Login.jsp"/>			
		<http-basic/>
		<concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="true"/>
		
	</http>	
   
   <!-- 認證供應商 -->
   <authentication-provider>
        <password-encoder hash="plaintext"/>
        <user-service>
            <user name="admin" password="admin" authorities="ROLE_ADMIN" />
	        <user name="zhangsan" password="zhangsan" authorities="ROLE_USER" />            
	    </user-service>
	</authentication-provider>	
	
</beans:beans>

 Login.jsp

<form name="f" action="j_spring_security_check" method="POST">
      <table>
        <tr>
        	<td>使用者名稱:</td>
        	<td><input type="text" name="j_username" /></td>
        </tr>
        <tr>
        	<td>密碼:</td>
        	<td><input type="password" name="j_password" /></td>
        </tr>
        <tr>
        	<td><input type="checkbox" name="_spring_security_remember_me"></td>
        	<td>兩週之內不用輸入密碼</td>
        </tr>
        <tr><td colspan="2"><input name="submit" type="submit" value="登 錄"></td></tr>
        <tr><td colspan="2"><input name="reset" type="reset" value="重 置"></td></tr>
      </table>
    </form>

 現在想更深入的學習,網上的資料沒合適的。

想實現的功能

1. 當用戶登入時,使用者名稱和密碼要與資料庫中的對應,然後存到session裡,以備用。

2.管理員可以給 使用者分配和取消許可權,不像上面是固定的。

3.聽說還要寫的什麼類?UserDetailsServiceImp?

最近,天天到網上搜索,有的打著spring security2 或acegi2.x的旗號,其配置那是相當的繁瑣(估計是1.x的,騙人),而且相關的程式碼和類都沒展現全,對我這菜鳥級的感到很迷茫。希望高手們能獻出自己的完整小例子,倡導資源共享。能幫上忙的儘管來吧。謝謝!