SpringSecurity原理剖析及其实战(三)
1、自定义登录页面
默认登录页面通过DefaultLoginPageGeneratingFilter#generateLoginPageHtml生成
- 编写登录页面
默认登录页面通过<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/user/login" method="post">
用户名:<input type="text" name="username"/><br/>
密码: <input type="password" name="password"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
- 自定义登录页面配置
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin() //表单提交
.loginPage("/login.html") //自定义登录页面
.loginProcessingUrl("/user/login") //登录访问路径,必须和表单提交接口一样
.defaultSuccessUrl("/admin/index") //认证成功之后跳转的路径
.and().authorizeRequests()//设置哪些路径可以直接访问,不需要认证
.antMatchers("/user/login","/login.html")
.permitAll() .anyRequest().authenticated() //需要认证
.and().csrf().disable(); //关闭csrf防护
}
测试
访问/admin/demo直接返回结果,不用认证

访问/admin/index跳转到自定义登录界面

常见问题:

原因是登录只接受Post请求 如下,通过successForwardUrl和failureForwardUrl设置登录成功和失败后的跳转页面
@Override
protected void configure(HttpSecurity http) throws Exception {
// 认证
http.formLogin() //表单登录
.loginPage("/login.html") //自定义登录
.

最低0.47元/天 解锁文章
7592

被折叠的 条评论
为什么被折叠?



