初踏Spring Security 2.x
阿新 • • 發佈:2019-02-03
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的,騙人),而且相關的程式碼和類都沒展現全,對我這菜鳥級的感到很迷茫。希望高手們能獻出自己的完整小例子,倡導資源共享。能幫上忙的儘管來吧。謝謝!