Spring如何在登录URL上设置动态前缀

时间:2017-05-31 11:11:58

标签: java spring spring-mvc login

我有一个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

0 个答案:

没有答案