我有一个使用 Spring Security 的Web应用程序。它适用于 Tomcat ,但不适用于 Weblogic 12.2.1.2 。
在Weblogic上,尝试访问受限URL(例如localhost:7001 / website / restricted / welcome)时,用户不会重定向到登录页面。在Tomcat上,用户可以正确地重定向到登录页面。
我了解到这是 Weblogic 12.1 的 bug ,并且似乎已在Weblogic 12.2中修复。但是我使用的是Weblogic 12.2.1.2 ,因此遇到了同样的问题。
我阅读了一些解决方案,但是由于我有不同的Spring配置,因此我很难理解它们。
这些是我关于Spring Security的课程。
这是扩展 WebSecurityConfigurerAdapter 的类。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication()
.passwordEncoder(passwordEncoder())
.withUser("username1")
.password(passwordEncoder()
.encode("password1"))
.roles("ADMIN");
}
@Bean
public PasswordEncoder passwordEncoder() {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
return passwordEncoder;
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.formLogin()
.loginPage("/login")
.usernameParameter("userId")
.passwordParameter("password");
httpSecurity.formLogin()
.defaultSuccessUrl("/")
.failureHandler(new CustomAuthenticationFailureHandler())
.and()
.sessionManagement()
.maximumSessions(1)
.expiredUrl("/login?expired")
.maxSessionsPreventsLogin(true);
httpSecurity.logout()
.logoutSuccessUrl("/login?logout");
httpSecurity.rememberMe()
.rememberMeParameter("rememberMe")
.key("rememberMeKey")
.tokenValiditySeconds(1800);
httpSecurity.exceptionHandling()
.accessDeniedPage("/login?accessDenied");
httpSecurity.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/**/add").access("hasRole('ADMIN')")
.antMatchers("/**/market/**").access("hasRole('USER')");
httpSecurity.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
}
这是扩展 AbstractSecurityWebApplicationInitializer 的类。
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer
implements WebApplicationInitializer {
@Override
protected boolean enableHttpSessionEventPublisher() {
return true;
}
}
该问题似乎与 Spring Boot 有关。 在 Spring Tool Suite 上,当我使用 Spring Starter Project向导(春季启动)时,遇到了问题。 如果我不使用Spring Boot,则Spring Security可以正常工作!
如何解决此问题? 谢谢