我有一个Spring应用程序,始终以动态前缀开头。这是因为我需要该前缀来进行一些内部配置。问题是,当我尝试设置我的登录页面时,传递该前缀并进行工作是不可能的。如何将dymanic前缀设置为我的登录页面?
这是我的AppController的一部分,我将分配请求映射以获得我的前缀。
AppCotroler.java
@Controller
@RequestMapping("/{myDynamicPrefix}")
public class AppController {
...... @PathVariable String myDynamicPrefix // To ascces to the variable
}
这是我的WebSecurityConfigurerAdapter的一部分,其中登录页面是对齐的。
WebSecurityConfig.java
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
MyDBAuthenticationService myDBAauthenticationService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests().antMatchers("/{myDynamicPrefix}/login").permitAll();
// If no login, it will redirect to /login page.
http.authorizeRequests().antMatchers("/","/{myDynamicPrefix}/**").access("hasAnyRole('ROLE_USER')");
http.authorizeRequests().and().exceptionHandling().accessDeniedPage("/403");
// Config for Login Form
http.authorizeRequests().and().formLogin()//
// Submit URL of login page.
.loginProcessingUrl("/j_spring_security_check") // Submit URL
.loginPage("/{myDynamicPrefix}/login")//
.defaultSuccessUrl("/userInfo")//
.failureUrl("/{myDynamicPrefix}/login?error=true")//
.usernameParameter("username")//
.passwordParameter("password")
// Config for Logout Page
.and().logout().logoutUrl("/{myDynamicPrefix}/logout").logoutSuccessUrl("/{myDynamicPrefix}/logoutSuccessful");
}
我们认为.antMatchers("/{myDynamicPrefix}/login")
和.antMatchers("/","/{myDynamicPrefix}/**")
工作正常但.loginPage("/{myDynamicPrefix}/login")
根本不起作用。
这是我想要网址的示例
http://localhost:8080/MyApp/MyPrefix/MyPage