要在不使用AbstractSecurityWebApplicationInitializer的情况下启用Spring Security,可以通过以下步骤进行设置:
org.springframework.boot
spring-boot-starter-security
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/public/**").permitAll() // 公共路径不需要认证
.anyRequest().authenticated() // 其他路径需要认证
.and()
.formLogin().permitAll() // 开启表单登录
.and()
.logout().permitAll(); // 开启注销功能
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER"); // 在内存中配置一个用户
}
}
这里示例中使用了基于表单的认证,配置了一个公共路径和一个需要认证的路径。在configure(AuthenticationManagerBuilder auth)方法中,使用了内存认证,配置了一个用户名为"user",密码为"password"的用户。
如果你使用的是Spring Boot,那么以上配置已经足够启用Spring Security。如果你使用的是传统的Spring MVC项目,还需要在web.xml文件中添加一个DelegatingFilterProxy过滤器。
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
以上就是在不使用AbstractSecurityWebApplicationInitializer的情况下启用Spring Security的解决方法。你可以根据自己的需要进行配置和调整。