Использование spring boot с angular для страницы входа с использованием Spring security

#angular #spring #spring-boot

#angular #spring #spring-boot

Вопрос:

Я пытаюсь реализовать страницу входа и приветствия, используя Angular в качестве интерфейса и spring boot в качестве контроллера.

В моем WebSecuirtyConfigureAdapter

 @Override
protected void configure(HttpSecurity http) throws Exception
{
    http.httpBasic().and()
        .authorizeRequests()
            .antMatchers("/index.html").permitAll()
            .antMatchers("/src/assets/logo.png").permitAll()
            .antMatchers("/main.js").permitAll()
            .antMatchers("/main.js.map").permitAll()
            .antMatchers("/polyfills.js").permitAll()
            .antMatchers("/polyfills.js.map").permitAll()
            .antMatchers("/styles.js").permitAll()
            .antMatchers("/styles.js.map").permitAll()
            .antMatchers("/vendor.js").permitAll()
            .antMatchers("/vendor.js.map").permitAll()
            .antMatchers("/runtime.js.map").permitAll()
            .antMatchers("/runtime.js").permitAll()
            .antMatchers("/saml/**").permitAll()
            .antMatchers("/favicon.ico").permitAll()
            .antMatchers("/assets/logo.png").permitAll()
            .antMatchers("/oauth/**").permitAll()
            .antMatchers("/userinfo").permitAll()
            .antMatchers("/").permitAll()
        .anyRequest()
            .authenticated()
        .and()
            .formLogin().loginPage("/#/login").permitAll()
            .successHandler(this.successHandler)
            .failureHandler(this.failureHandler)
        .and()
            .exceptionHandling()
            .authenticationEntryPoint(this.entryPoint)
        .and()
            .csrf().csrfTokenRepository(csrfTokenRepository()).ignoringAntMatchers("/url5/**")
        .and()
            .addFilterAfter(filter, BasicAuthenticationFilter.class)
            .addFilterBefore(filter, CsrfFilter.class)
            .addFilterAfter(this.csrfHeaderFilter(), CsrfFilter.class);
}
  

Мне нужно перенаправить любые запросы, не прошедшие проверку подлинности, в AuthenticationEntryPoint, но поскольку мне пришлось добавить «/», чтобы разрешить Angular работать, он работает не так, как ожидалось.
Поскольку разрешено «/», каждый запрос разрешен, и я не попадаю в точку входа, которая направляет меня на страницу входа в / #/ login.
Если я удалю «/», я смогу попасть в точку входа, но Angular не будет отображаться, поскольку spring security не позволит это загрузить. Мне нужно, чтобы мой несанкционированный запрос проходил через точку входа, поскольку это устаревший код, и он обрабатывает параметры, которые могут быть отправлены вместе с запросом.
Не могли бы вы помочь мне, как добиться того же?

Ответ №1:

Попробуйте добавить a Controller , который будет перенаправлен на index.html .

 @Controller
public class UiController {

    @RequestMapping({
            "/",
            "/login", //my login page is on /login
    })
    public String handler() {
        return "forward:index.html";
    }