2020-11-17

Spring Security 自定义登录页面 — 05


一般都不会使用Spring Security默认的登录页面,我们大都使用自己的登录页面,只是登录的时候,会使用Security进行验证。

【怎么进行页面自定义呢?】

源码如下,就可以看看可以使用哪些方法使用自定义的页面:

 	protected void configure(HttpSecurity http) throws Exception {
	  		http.authorizeRequests().antMatchers("/**").hasRole("USER").and().formLogin()
			.usernameParameter("username") // default is username
			.passwordParameter("password") // default is password
	 		.loginPage("/authentication/login") // default is /login with an HTTP get修改认证页面
	 		.failureUrl("/authentication/login?failed") // default is /login?error修改认证失败的页面
	 		.loginProcessingUrl("/authentication/login/process"); // default is /login//修改认证处理的地址
	 																// with an HTTP
	 																// post
	 	}

Spring Security的默认登录规则:

默认我们的登录页的路径是 /login ,(使用的是Get请求);当我们点击登录的时候,页面会将包含有用户名
和密码的表单提交到 /login 路径下(使用Post方式提交)。失败的话会跳转到 /login?failed 路径。

发现这里有个共同点,路径的名称都是一样的,都是login,但是提交方式不一样,处理的方式也不一样。


配置方法:

loginPage():配置登录页面【默认是/login  GET方式】
failureUrl():配置验证失败的地址【默认是 /login?failed】
loginProcessingUrl():登录页面提交表单的地址【默认是 /login  POST方式】
usernameParameter():修改接收用户的用户名的属性名【默认是username】
passwordParameter():修改接收的用户的密码的属性名【默认是password】

loginPage和loginProcessingUrl需要重点的使用。

【情况1】
	当配置了loginPage("/xxx")但是没有配置loginProcessingUrl的时候,我们提交表单中的提交地址action="/xxx"中
	的xxx必须和	loginPage("/xxx")的xxx一致;
	
	即:当仅配置了登录页面**loginPage**,没有配置**loginProcessingUrl**时,
	【访问登录页面的路径】 和 【登录页面表单提交的地址】 必须【一致】
【情况2】
	**loginPage**和**loginProcessingUrl**都配置了
	则:访问页面提交的路径和loginProcessingUrl配置的路径保持一致即可

情况1:

http.formLogin().loginPage("toLogin");
<form action="/toLogin" method="post">
    用户名:<input type="text" name="user" placeholder="请输入用户名"/>
    密码:<input type="password" name="pwd" placeholder="请输入密码">
    <input type="checkbox" name="rem">记住我<br>
    <input type="submit" value="登录">


</form>

情况2:

http.formLogin().loginPage("toLogin").loginProcessingUrl("/process");
<form action="/process" method="post">
    用户名:<input type="text" name="user" placeholder="请输入用户名"/>
    密码:<input type="password" name="pwd" placeholder="请输入密码">
    <input type="checkbox" name="rem">记住我<br>
    <input type="submit" value="登录">
</form>
注:自定义的表单中的  【用户名】和【密码】的【name】属性必须和默认的值相同,默认值为
name="username"
name="password"
或者我们可以进行自定义,可以使用
usernameParameter()
passwordParameter()
来进行修改。

欸,怎么在自定义的页面中加上remember me呢?

在表单中写入一个复选框即可,接收的属性名也可以自定义。
在配置类中进行配置
//开启记住我功能,并将属性名设置为rem
        http.rememberMe().rememberMeParameter("rem");

html表单如下:

 <input type="checkbox" name="rem">记住我<br>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值