尝试创建自定义 AuthenticationProvider 。现在只需添加println以供检查使用Spring这个类或不。就在那里开始奇怪的事情:
从官方文档中获取示例:
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
Spring执行我的自定义 AuthenticationProvider 。然后以自定义登录页面为例:
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
查看:
form.ui.form(action="/login", method="post")
h4.ui.dividing.header Autorisation
.field
label Login
input(name="username" placeholder="Логин" type="text")
.field
label Пароль
input(name="password" placeholder="Password" type="password")
button.ui.button(type="submit") Submit
页面将会打开,但如果我们尝试按submit
,它将返回403.Сustom AuthenticationProvider 不会返回任何内容。
答案 0 :(得分:1)
启用Spring Security默认csrf选项。如果你发布没有csrf令牌,Spring Security会产生403禁止错误。
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.csrf()
.disabled();
或在表单中附加csrf标记。
https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html#csrf-configure