Весенняя загрузка LDAP-аутентификации с пользовательской страницей входа не аутентифицируется - PullRequest
0 голосов
/ 26 мая 2020

Привет, я пытаюсь использовать аутентификацию на основе LDAP (Spring Security) в приложении весенней загрузки.

Я могу пройти аутентификацию при использовании страницы входа по умолчанию.

Меня перенаправляют на ту же страницу входа при использовании пользовательской страницы входа. Я не вижу никаких исключений или ошибок в проекте.

У меня есть следующий код в моем приложении.

WebSecurityConfig. java


    @Override
        protected void configure(HttpSecurity http) throws Exception {

            http.authorizeRequests()
            .antMatchers("/resources/**", "/assets/**").permitAll()
            .anyRequest().fullyAuthenticated()
            .and()
            .formLogin()
            .loginPage("/login")
            .permitAll()
            .usernameParameter("username")
            .passwordParameter("password")
            .successForwardUrl("/home");
        }

        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {

            if (Boolean.parseBoolean(ldapEnabled)) {
                auth.ldapAuthentication().contextSource().url(ldapUrls + ldapBaseDn).managerDn(ldapSecurityPrincipal)
                        .managerPassword(ldapPrincipalPassword).and().userDnPatterns(ldapUserDnPattern);
            } else {
                auth.inMemoryAuthentication().withUser("user").password("password").roles("USER").and().withUser("admin")
                        .password("admin").roles("ADMIN");
            }
        }

Login. jsp


      <form action="/home" method="post" class="form-horizontal">
       <div class="form-group">
          <div class="col-sm-5" id="message">
             <c:if test="${param.action != null}">
                <c:if test="${sessionScope.exception != null}">
                   <div class="alert alert-danger">
                      <c:out value='${exception}' />
                   </div>
                </c:if>
             </c:if>
          </div>
       </div>
       <div class="col-sm-10" style='margin-left: 15px'>
          <div class="form-group">
             <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}">
             <div class="col-sm-4">
                <input type="text" name="username" class="form-control"
                   placeholder="
                   <spring:message code="login.usernamePlaceholder"/>"
                required autofocus value="${sessionScope.username}">
             </div>
          </div>
          <div class="form-group">
             <div class="col-sm-4">
                <input type="password" name="password" class="form-control text-center"
                   placeholder="<spring:message code="login.passwordPlaceholder"/>"
                required>
             </div>
          </div>
          <div class="form-group">
             <div>
                <input type="submit" class="btn btn-primary" value="Sign-In">
                <input type="button" class="btn btn-primary" value="Clear"
                   onclick="location.href='/login';">
             </div>
          </div>
       </div>
    </form>

LoginController. java


    @Controller
    public class LoginController {
        @Autowired
        LoginService service;


        @GetMapping("/")
        public String home() {

            return "login";
        }

        @RequestMapping(value="/home", method = RequestMethod.POST)
        public String showWelcomePage(ModelMap model, @RequestParam String name, @RequestParam String password){    
            try{
            model.put("name", name);
            model.put("password", password);
            return "home";
            }catch(Exception e){
                return "error";
            }
        }

        @RequestMapping(value="/login", method = RequestMethod.GET)
        public String showLoginPage(ModelMap model){
            return "login";
        }

...