Я пытаюсь войти в клиентский интерфейс через zuul api-gateway. У меня есть два модуля api-шлюза, работающие на порту 8000 (т. Е. http://localhost:8000) и erp-service, работающие на порту 8010 (т. Е. http://localhost:8010)
. Следующие настройки я добавил в api-gatewayapplication.yml
zuul:
sensitive-headers: Cookie,Set-Cookie
ignoredServices: '*'
admin-services:
path: /_v/**
sensitiveHeaders: Cookie,Set-Cookie
serviceId: erp-service
stripPrefix: false
и в erp-service application.yml
server:
port: 8010
servlet:
contextPath: /_v
Я использую функцию весенней безопасности formLogin и страницу входа. Ниже приведена моя конфигурация безопасности весны
@Configuration
@EnableWebSecurity
@EnableScheduling
public class SpringSecurtiyConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AccessDeniedHandler accessDeniedHandler;
@Autowired
private AlphaUserDetailsService userDetailsService;
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/bootstrap/**").antMatchers("/dist/**").antMatchers("/plugins/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/bootstrap/**").permitAll().antMatchers("/dist/**").permitAll()
.antMatchers("/install/role").permitAll().antMatchers("/plugins/**").permitAll().antMatchers("/login").permitAll()
.anyRequest().authenticated().and().csrf().disable()
.formLogin().loginPage("/login").failureUrl("/login?error=true")
.defaultSuccessUrl("/home", true)
.usernameParameter("email").passwordParameter("password")
.and()
.logout().permitAll().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/")
.invalidateHttpSession(true).deleteCookies("JSESSIONID").and().exceptionHandling()
.accessDeniedPage("/access-denied").accessDeniedHandler(accessDeniedHandler);
http.headers().frameOptions().sameOrigin();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
}
}
и Controller
@Controller
public class RootController {
@GetMapping(value = {"/", "/login"})
public String getLandingPage() {
if(!SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals(AlphaConstants.ANONYMOUS_USER)) {
return "redirect:/home";
}
return "login";
}
@GetMapping(value = "/home")
public String getHomePage() {
if(!SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals(AlphaConstants.ANONYMOUS_USER)) {
return "home";
}
return "login";
}
}
Я могу загрузить страницу входа в браузер http://localhost:8000/_v/login
после ввода учетных данных и нажать кнопку входа в URL-адрес браузера http://localhost:8000/_v/login меняется на http://localhost:8010/_v/login, что означает erp-service url, но я хочу, чтобы оно оставалось на api-gateway url с домашней страницейкак http://localhost:8000/_v/home
Я прошел по ссылкам ниже, но у меня это не сработало.
Zuul Routing on Root Path
Spring Cloud:перенаправление по умолчанию со шлюза на интерфейс пользователя
https://github.com/spring-cloud/spring-cloud-netflix/issues/2787
Нет ошибок в консоли средства разработки.
помогите пожалуйста.