Я использую Spring Boot с Spring MVC на бэкэнде и Vue на фронтэнде. Также используйте форму, предоставленную Spring Sequrity в качестве формы входа. Он перенаправляет прямо на /posts
. Вот WebSecurityConfig
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final UserDetailsService userDetailsService;
public WebSecurityConfig(UserDetailsService userDetailsService) {
this.userDetailsService = userDetailsService;
}
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/css/**", "/js/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**")
.authorizeRequests()
.antMatchers("/","/login**", "/js/**","/error**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().defaultSuccessUrl("/posts",true)
.and()
.logout().logoutSuccessUrl("/login").permitAll().deleteCookies("JSESSIONID").invalidateHttpSession(true)
.and()
.csrf().disable();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider auth = new DaoAuthenticationProvider();
auth.setUserDetailsService(userDetailsService);
auth.setPasswordEncoder(passwordEncoder());
return auth;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) {
auth.authenticationProvider(authenticationProvider());
}
}
Так как я правильно возвращаю представление для этого URL и использую Thymeleaf , чтобы сделать это, эта страница загружается правильно. Вот простое сопоставление для этого.
@GetMapping("/posts")
public String getPosts() {
return "index";
}
Проблема возникает при попытке перенаправить отсюда. Вот как выглядит мой самый простой список маршрутов, который передается в функцию конструктора VueRouter
.
const routes = [
{ path: '/new-post', component: NewPost },
];
На /posts
есть кнопка с to="/new-post"
внутри. В режиме истории адрес превращается в /new-post
, но содержимое страницы остается прежним.
<v-btn to="/new-post">Add post</v-btn>
Прямой доступ на /new-post
воспроизводит ошибку 404 .
Другая странная вещь происходит при выходе из режима по умолчанию с ha sh. URL становится /posts#
вместо /#/posts
, как я ожидал. Соответственно с редиректом получается /posts#/new-post
. В противном случае поведение остается прежним. Как мне кажется, где-то здесь кроется загадка.