1. 首页
  2. 软件开发
  3. Spring Security——配置方式和定制化选项多种方式(包含Java配置和XML配置以及注解)

Spring Security——配置方式和定制化选项多种方式(包含Java配置和XML配置以及注解)

  • 发布于 2024-08-17
  • 3 次阅读

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