首页 > 解决方案 > 当我输入登录页面时,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>
<!--错误信息:&lt;h4 th:text="${msg}"></h4>-->
<form action="" method="post">
    <p>账号:&lt;input type="text" name="username" value="sdad"/></p>
    <p>密码:&lt;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";
}

标签: springldap

解决方案


在登录页面中添加操作

 <form action="/login" method='POST'>

推荐阅读