Spring Security提供了多种配置方式和定制化选项,可以根据项目需求进行灵活配置。
1. 基于Java配置的方式
通过创建一个继承自 WebSecurityConfigurerAdapter 的配置类,可以实现对Spring Security的各种配置。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin").password("{noop}admin123").roles("ADMIN")
.and()
.withUser("user").password("{noop}user123").roles("USER");
}
}
2. 基于XML配置的方式
通过在Spring配置文件中定义 <security:http>和 <security:authentication-manager> 等标签,可以配置Spring Security的安全规则和认证授权信息。
<security:http auto-config="true">
<security:intercept-url pattern="/admin/**" access="hasRole('ADMIN')"/>
<security:intercept-url pattern="/user/**" access="hasAnyRole('ADMIN', 'USER')"/>
<security:form-login login-page="/login" default-target-url="/home"/>
<security:logout logout-success-url="/logout"/>
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="admin" password="admin123" authorities="ROLE_ADMIN"/>
<security:user name="user" password="user123" authorities="ROLE_USER"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
3. 使用注解进行安全配置
可以在Spring Security配置类中使用注解 @EnableGlobalMethodSecurity 来启用方法级安全性,以实现对方法的细粒度权限控制。
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// 配置方法级安全性
}
原文链接: https://blog.csdn.net/2401_82884096/article/details/138248963