SpringBoot 2.1.3 Безопасность нескольких доступных страниц входа для первой аутентификации - PullRequest
0 голосов
/ 01 мая 2019

Я разрабатываю SpringBoot 2.1.3 + Thymeleaf 3 + Tomcat 8 WebApp.Я реализовал Spring Security и все работает хорошо.Теперь у меня есть небольшая проблема, потому что я хочу реализовать две страницы входа в систему, одну для пользователей backoffice и другую для всех остальных пользователей.

Я не хочу помещать обе формы на одной странице и хотел бысоздать страницу с простой формой для пользователей backoffice и ссылкой для перенаправления на другую страницу (с другой формой) для пользователей-клиентов.

Я прочитал некоторые из них и нашел только способ заказа WebSecurityConfigurerAdapterи создание нескольких точек входа, но таким образом я могу войти на страницу с порядком 1, а затем перейти на другую страницу формы.Это не то, что я хочу сделать.

Вы знаете, есть ли способ сделать это ??Спасибо

1 Ответ

0 голосов
/ 03 мая 2019

Я нашел способ, и он довольно прост. Я настроил WebSecurityConfigurerAdapter следующим образом:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/login-procout").permitAll() // login for furnishers
            .anyRequest().authenticated()
            .and()
            .formLogin().loginPage("/login-officers") // default login page
            .permitAll()
            .successHandler(customAuthenticationSuccessHandler())
            .and()
        .logout()
            .permitAll();

    http.csrf().disable();
}

Затем я создаю две html страницы login-officers.html и login-procout.html, на которые ссылается Controller следующим образом:

@Controller
public class MyController {

   @GetMapping("/login-officers")
   public String loginOfficers() {
      return "login-officers";
   }

   @GetMapping("/login-procout")
   public String loginProcout() {
      return "login-procout";
   }

}

И на обеих страницах у меня по умолчанию Spring Security Form:

<form action="" th:action="@{/login}" method="post">
   <input type="text" name="username" id="username" placeholder="Username"/>
   <input type="password" name="password" id="password" placeholder="Password"/>
   <input type="submit" id="login" value="Log In" />
</form>

Я не знаю, правильно ли это делать, но это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...