spring security新版本的爽点在哪里,DSL?

新老版本写法对比

新版本

public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
    
}

老版本

@Configuration
@EnableWebSecurity
public class MyWebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
     }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll();
    }
}

爽点在于哪里

新版本支持DSL,也就是HttpSecurity 配置方式上的不同,但其实更爽的是不需要重写,而是采用注入bean的方式,有啥区别呢,一个是spring的方向问题,更趋向模块组件化,配置化,另一个是采用重写,有一定的概率在后续升级会隐藏掉一些新功能,对于我们来说,就是代码变简洁了。

Spring Security 是一个广泛使用的开源框架,用于实现企业级应用程序的安全性,包括身份验证、授权和会话管理等。新版本(如Spring Security 5.x或以上)提供了高度灵活的自定义鉴权机制,以便开发者根据项目需求创建自己的认证策略。 1. 自定义认证器(Custom Authentication Provider): 在Spring Security中,你可以创建一个实现了`AuthenticationProvider`接口的类,这个接口定义了认证过程的主要逻辑,比如从数据库、API或其他源获取用户信息并验证其凭证。 ```java public class CustomAuthProvider implements AuthenticationProvider { // 实现 authenticate 和 supports 方法 public Authentication authenticate(Authentication authentication) throws AuthenticationException {...} public boolean supports(Class<?> authentication) {...} } ``` 2. 自定义用户DetailsService: 如果你想自定义如何加载和检索用户信息,可以实现`UserDetailsService`接口。这个接口主要用于在认证过程中查找用户的详细信息。 ```java @Service public class CustomUserService extends UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {...} } ``` 3. 自定义访问决策管理器(AccessDecisionManager): 这个组件负责决定是否允许用户访问某个资源。你可以创建一个实现了`AccessDecisionManager`接口的类,或者使用`AbstractAccessDecisionManager`作为基础,自定义授权规则。 4. 使用`WebSecurityConfigurerAdapter`或`SecurityWebApplicationInitializer`: 在Spring Boot应用中,你可以继承这些基类来自定义全局的安全配置。通过`@Configuration`注解,可以在类中添加自定义的过滤器、授权规则等。 5. 注解支持:Spring Security提供了许多注解,如`@PreAuthorize`、`@PostAuthorize`等,可以直接在方法上标记安全规则。你也可以自定义这些注解处理器,以便处理更复杂的授权逻辑。 相关问题-- 1. 如何在Spring Security中注册自定义的AuthenticationProvider? 2. 如何在`WebSecurityConfigurerAdapter`中集成自定义的用户认证逻辑? 3. 什么是`@PreAuthorize`注解,它是如何影响自定义鉴权的?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值