springBoot的启动器
org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-thymeleaf
默认的账号为:user ,密码在控制台打印输出
前端、请求为 /userLogin
controller层,写的请求是 /userLogin
@GetMapping("/userLogin")
public String login(){
return "login/login";
}
SpringSecurity 配置类获取参数并校验
http.formLogin()
.loginPage("/userLogin").permitAll() //认证之前跳转的页面
.usernameParameter("username").passwordParameter("password")
.defaultSuccessUrl("/test") //成功之后的跳转,重定向
.failureUrl("/userLogin?error"); //登录失败之后的跳转,转发
当我表单点击提交的时候,并没有走controller层的方法(已测试)。但是我不理解SpringSecurity 是如何让表单不走controller的方法同时获取到表单里面的参数。
找到问题所在了上面的配置类对比一下下面的配置类
http.formLogin()
.loginPage("/userLogin").permitAll() //认证之前跳转的页面,登录访问路径默认和登录页面路径一致
.loginProcessingUrl("/ceshi") //登录访问路径,这个是表单账号密码提交的路径
.usernameParameter("username").passwordParameter("password")
.defaultSuccessUrl("/test") //成功之后的跳转,重定向
.failureUrl("/userLogin?error"); //登录失败之后的跳转,转发
解释:上面的 .loginProcessingUrl("/ceshi") 如果没有写的话,登录访问路径默认和登录页面路径一致。本身这个表单就不走controller层的方法,为什么不走?很大原因是拦截器的问题(可以去看源码)。



