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:退出后跳转的地址



猜你喜欢

转载自blog.csdn.net/wyb_night/article/details/80301285