Spring Security - Перенаправление на пользовательскую страницу входа без прохождения через контроллер - PullRequest
0 голосов
/ 11 января 2020

В настоящее время я использую Spring Boot + Spring Security для разработки простого веб-сайта, для входа в который нужен пользователь. Я создал свою собственную пользовательскую страницу входа в систему stati c в resources / templates1 / bruceLogin1. html. Любой не прошедший проверку подлинности доступ к моему веб-сайту сначала будет перенаправлен на URL-адрес страницы входа, который http://localhost: 8080 / templates1 / bruceLogin1. html

Примечание: я НЕ создаю какие-либо контроллер для этого URL входа в систему, поэтому я ожидаю, что bruceLogin1. html будет доступен напрямую в обход контроллера. Поскольку я напрямую разрешаю доступ к этой html странице без прохождения через контроллер, я предполагаю, что преобразователь представления (например, thymleaf) не требуется.

Я открываю свой браузер и ввожу http://localhost: 8080 / blablabl , и браузер перенаправляет меня на http://localhost: 8080 / templates1 / bruceLogin1. html, но, к сожалению, я получил ошибку

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Jan 11 12:40:37 SGT 2020
There was an unexpected error (type=Not Found, status=404).
No message available

Ниже приведена моя конфигурация,


@SpringBootApplication
@EnableWebSecurity
public class SpringSecurityCatalogApplication  implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(SpringSecurityCatalogApplication.class, args);
    }



    @EnableWebSecurity
    @Order(Ordered.HIGHEST_PRECEDENCE)
    class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {

             http
             .authorizeRequests()
             .antMatchers("/resources/**").permitAll()
             .anyRequest().authenticated()
             .and()
             .formLogin()
             .loginPage("/templates1/bruceLogin1.html")
             .permitAll();
        }
    }


}

1 Ответ

0 голосов
/ 12 января 2020

Подумайте, вместо того, чтобы поместить в папку resources / template1, я просто помещу пользовательскую страницу входа в папку resources / stati c или resources / publi c. Затем настройте, как показано ниже

@EnableWebSecurity
    @Order(Ordered.HIGHEST_PRECEDENCE)
    class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {

             http
             .authorizeRequests()
             .antMatchers("/resources/**").permitAll()
             .anyRequest().authenticated()
             .and()
             .formLogin()
             .loginPage("/bruceLogin1.html")
             .permitAll();
        }
    }

Откройте браузер и получите доступ к любому URL, вы будете перенаправлены на http://localhost: 8080 / bruceLogin1. html. И это все!
Обратите внимание: для этого не требуется ни контроллер, ни просмотрщик.

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