Spring Security无法在Weblogic 12.2.1.2上运行

时间:2019-01-28 11:08:07

标签: java spring spring-security weblogic

我有一个使用 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可以正常工作!

如何解决此问题? 谢谢

0 个答案:

没有答案