Spring Security框架_02_修改登錄頁面

基於Spring Security框架入門_01創建的項目進行:

創建登錄頁面(login.html)和登錄失敗頁面(login_error.html),添加favicon.ico 到根目錄(網站圖標)

login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登錄</title>
</head>
<body>
	<form action="/login" method="post">
		<table>
			<tr>
				<td>用戶名:</td>
				<td><input type="text" name="username" ></td>
			</tr>
			<tr>
				<td>密碼:</td>
				<td><input type="text" name="password" ></td>
			</tr>
			<tr>
				
				<td colspan="2"><input type="submit" value="登錄" ></td>
			</tr>
		</table>
	</form>
</body>
</html>

login_error.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>賬號或者密碼錯誤</h1>
</body>
</html>

修改spring 配置文件spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<bean:beans xmlns="http://www.springframework.org/schema/security"
	xmlns:bean="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.xsd
						http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
	<!-- security="none" 設置此資源不被攔截 -->
	<http pattern="/login_error.html" security="none"></http>
	<http pattern="/login.html" security="none"></http>
	<http pattern="/*.ico" security="none"></http>
	<http>
		
		<intercept-url pattern="/*" access="hasRole('ROLE_USER')" />
		<form-login login-page="/login.html" default-target-url="/index.html"
		authentication-failure-url="/login_error.html"/>
		<csrf disabled="true"/>
		<logout/>
            <headers>
               <frame-options policy="SAMEORIGIN"/>
            </headers>
</http><!-- 認證管理器 --><authentication-manager><authentication-provider><user-service><user name="root" password="123456" authorities="ROLE_USER"/></user-service></authentication-provider></authentication-manager></bean:beans>

啓動訪問首頁,登陸頁面和錯誤頁面改變

csrf disabled="true" 關閉csrf ,如果不加會出現錯誤


CSRF(Cross-site request forgery)跨站請求僞造,也被稱爲“One Click Attack”或者Session
Riding,通常縮寫爲CSRF 或者XSRF,是一種對網站的惡意利用。

如果你沒有設置登錄頁security="none" ,將會出現'該網頁無法正常運行'


form-login屬性詳解

form-login是spring security命名空間配置登錄相關信息的標籤,它包含如下屬性:
1. login-page 自定義登錄頁url,默認爲/login
2. login-processing-url 登錄請求攔截的url,也就是form表單提交時指定的action
3. default-target-url 默認登錄成功後跳轉的url
4. always-use-default-target 是否總是使用默認的登錄成功後跳轉url
5. authentication-failure-url 登錄失敗後跳轉的url
6. username-parameter 用戶名的請求字段 默認爲userName
7. password-parameter 密碼的請求字段 默認爲password
8. authentication-success-handler-ref 指向一個AuthenticationSuccessHandler用於處理認證成功的請求,不能和default-target-url還有always-use-default-target同時使用
9. authentication-success-forward-url 用於authentication-failure-handler-ref
10. authentication-failure-handler-ref 指向一個AuthenticationFailureHandler用於處理失敗的認證請求
11. authentication-failure-forward-url 用於authentication-failure-handler-ref

12. authentication-details-source-ref 指向一個AuthenticationDetailsSource,在認證過濾器中使用


SAMEORIGIN:

<headers>
   <frame-options policy="SAMEORIGIN"/>
</headers>
 spring Security下,X-Frame-Options默認爲DENY,非Spring Security環境下,X-Frame-Options的默認大多也是DENY,這種情況下,瀏覽器拒絕當前頁面加載任何Frame頁面,設置含義如下:

    DENY:瀏覽器拒絕當前頁面加載任何Frame頁面
    SAMEORIGIN:frame頁面的地址只能爲同源域名下的頁面
    ALLOW-FROM:origin爲允許frame加載的頁面地址。


<logout/>

加此配置後,會自動的產生退出登錄的地址/logout,如果你不想用這個地址,你也可以定義

生成的退出地址以及跳轉的頁面,配置如下

<logout logout-url="" logout-success-url=""/>

logout-url:退出的地址,會自動生成
logout-success-url:退出後跳轉的地址



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章