Spring Boot-如何配置多个登录页面

与我的团队一起,我们使用Spring Boot" title="Spring Boot">Spring Boot编写了Spring应用程序+ SAPUI5门户。Web应用程序分为三个单独的位置,例如:

webapp:-app1-app2-app3

为了访问这些应用程序,我们实现了登录页面。根据用户角色,我们将用户重定向到确切的应用。

我的Spring应用程序安全性如下所示:

    @Override

protected void configure(HttpSecurity http) throws Exception {

http.authorizeRequests()

.antMatchers("/app1/**/*.*")

.permitAll()

.antMatchers("/register.html")

.permitAll()

//

.antMatchers("/app2/*.*")

.hasRole("USER")

//

//

.antMatchers("/login*")

.permitAll()

.antMatchers("/soap/*")

.permitAll()

.antMatchers("/postLogin")

.authenticated()

//

.antMatchers("/app3/*")

//.permitAll()

.hasRole("ADMIN")

//

.anyRequest()

.authenticated()

// log in

.and()

.formLogin()

.loginPage("/login")

.failureUrl("/login?error=loginError")

.defaultSuccessUrl("/postLogin")

// logout

.and().logout().logoutUrl("/**/logout")

.logoutSuccessUrl("/login").deleteCookies("JSESSIONID").and()

.csrf()

.disable()

当然,我们还有带重定向的课程。现在,我们必须为每个应用程序提供不同的登录页面。我试图将spring

security配置为在不同页面上接受多个登录表单,但是它不起作用。可能吗?我阅读了文档,但没有定论。

回答:

您应该能够通过使用不同的实例配置多个HttpSecurity对象来做到这一点的Spring

Security 文档。基本上,您可以在配置类中定义多个扩展WebSecurityConfigurerAdapter的静态类。我自己使用它来根据URLS配置不同类型的auth(表单/基本),并进行了快速测试以确认它。我相信您的示例中会出现以下情况(如果我正确阅读了您的意图):

@EnableWebSecurity

public class MultiHttpSecurityConfig {

@Configuration

@Order(1)

public static class App1ConfigurationAdapter extends WebSecurityConfigurerAdapter {

protected void configure(HttpSecurity http) throws Exception {

http

.authorizeRequests()

.antMatchers("/app1/**/*.*")

.permitAll()

.antMatchers("/register.html")

.permitAll()

.anyRequest()

.authenticated()

// log in

.and()

.formLogin()

.loginPage("/login")

.failureUrl("/login?error=loginError")

.defaultSuccessUrl("/postLogin")

// logout

.and().logout().logoutUrl("/**/logout")

.logoutSuccessUrl("/login").deleteCookies("JSESSIONID").and()

.csrf()

.disable();

}

}

@Configuration

public static class App2ConfigurationAdapter extends WebSecurityConfigurerAdapter {

@Override

protected void configure(HttpSecurity http) throws Exception {

http

.authorizeRequests()

.antMatchers("/app2/*.*")

.hasRole("USER")

// log in

.and()

.formLogin()

.loginPage("/login2")

.failureUrl("/login2?error=loginError")

.defaultSuccessUrl("/postLogin")

// logout

.and().logout().logoutUrl("/**/logout")

.logoutSuccessUrl("/login2").deleteCookies("JSESSIONID").and()

.csrf()

.disable();

}

}

}

请注意,这些并不是真正不同的应用程序实例,因此,如果您以特定用户身份进行身份验证然后转到未授权的区域,则不会将您重定向到登录名。

以上是 Spring Boot-如何配置多个登录页面 的全部内容, 来源链接: utcz.com/qa/427847.html

回到顶部