Я успешно реализовал оба метода аутентификации по отдельности, и они работают нормально. Однако я столкнулся с проблемами при объединении двух реализаций, особенно в классе SecurityConfiguration для входа в форму.
Вот контекст моей реализации:
HTML-формы:
В login.html у меня есть следующая форма: html
В loginLdap.html у меня есть: html
Логика контроллера: у меня есть метод контроллера, который определяет, какую страницу входа отображать в зависимости от доступности LDAP:
Код: Выделить всё
@GetMapping("/login")
public String login(Model model) {
if (ldapService.isLdapAvailable()) {
System.out.println("Inside login method. LDAP is available.");
return "loginLdap"; // Redirect to loginLdap page if LDAP connection is successful
} else {
System.out.println("Inside login method. LDAP is unavailable.");
model.addAttribute("ldapUnavailableMessage", "LDAP service is currently unavailable. Do you want to continue with local backup authentication?");
return "login"; // Return login page without an LDAP
}
}
Конфигурации безопасности
У меня возникли трудности с настройкой класса SecurityConfiguration для правильной обработки обоих методов аутентификации. В частности, я не уверен, как настроить метод formLogin() для использования двух разных форм входа в зависимости от доступности LDAP.
Теперь в классе SecurityConfiguration. файл у меня есть следующий код:
Код: Выделить всё
.formLogin(
form -> form
.loginPage("/login").loginProcessingUrl("/user_login").usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/syslogger")
.permitAll()
)
Проблемы:Я не уверен, как настроить класс SecurityConfiguration для обработки этих различных сценариев входа в систему.
Мне хотелось бы узнать, как обеспечить вызов правильного метода аутентификации на основе выбора пользователем страницы входа. p>
Ниже я попробовал:
spring-security-two-login-pages
Код: Выделить всё
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.antMatchers("/user/**").hasRole("USER")
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/user-login")
.loginProcessingUrl("/user-login-process")
.defaultSuccessUrl("/user/home")
.permitAll()
.and()
.formLogin()
.loginPage("/admin-login")
.loginProcessingUrl("/admin-login-process")
.defaultSuccessUrl("/admin/dashboard")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/login")
.permitAll();
}
Дополнительная информация:
strong>
Я использую Spring Boot, REST API и PostgreSQL для своего приложения.
Любая помощь или примеры, касающиеся настройки SecurityConfiguration, будем очень признательны!
Подробнее здесь: https://stackoverflow.com/questions/787 ... form-login
Мобильная версия