У меня есть веб-приложение, которое использует Spring Security .Он работает на Tomcat , но не на Weblogic 12.2.1.2 .
На Weblogic пользователь не перенаправляется на страницу входа в систему при попытке достичьЗапрещенный URL (например, localhost: 7001 / website / limited / welcome).В Tomcat пользователь корректно перенаправляется на страницу входа в систему.
Я прочитал, что это ошибка из Weblogic 12.1 , и, похоже, она исправлена в 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 Boot, Spring Security работает правильно!
Как мне решить эту проблему?Спасибо