spring - 当我输入登录页面时,Spring 安全性不起作用
问题描述
这是我的安全配置:
@Configuration
@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {
@Value("${spring.security.ldap.domain}")
private String ldapDomain;
@Value("${spring.security.ldap.url}")
private String ldapUrl;
//
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.httpBasic()
.and()
.formLogin()
.loginPage("/login").permitAll()
.defaultSuccessUrl("/about", true);
}
这是登录页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<!--错误信息:<h4 th:text="${msg}"></h4>-->
<form action="" method="post">
<p>账号:<input type="text" name="username" value="sdad"/></p>
<p>密码:<input type="text" name="password" value="asda."/></p>
<p><input type="submit" value="登录"/></p>
</form>
</body>
</html>
Wnen 我使用它,它会打开登录页面,但无法提交。如果它可以提交,它会去/about但它不会。对于错误的密码,我会看到来自 LDAP 的日志。
这是控制器
@GetMapping("/login")
public String login() {
logger.info("login");
return "login";
}
我也看到了这个日志:
logger.info("login");
但是当我转换为安全配置类时:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.httpBasic()
.and()
.formLogin()
// .loginPage("/login").permitAll()
.defaultSuccessUrl("/about", true);
}
它打开登录页面,它打开春天的默认登录形式。所以,我没有看到任何这样的日志:
logger.info("login");
对于错误的密码,我没有看到任何日志或正确的密码。成功登录后,它转到大约
我该如何解决?我想用
.formLogin()
.loginPage("/login").permitAll()
.defaultSuccessUrl("/about", true);
使用 ldap
和
@GetMapping("/login")
public String login() {
logger.info("login");
return "login";
}
解决方案
在登录页面中添加操作
<form action="/login" method='POST'>