#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";
}