SpringSeurity--认证实现原理

1.SpringSecurity整体架构

        AccessDecisionManager则是负责授权的接口

        AuthenticationManager是负责认证的接口认证。认证成功的信息主要是由 Authentication 的实现类进行保存的,其接口定义为: AuthenticationManager 主要实现类为 ProviderManager,在 ProviderManager 中管理了众多 AuthenticationProvider 实例

        SecurityContextHolder 用来获取登录之后用户信息,Spring Security 会将登录用户数据保存在 Session ,是通过ThreadLocal 来实现的,当登录请求处理完毕后,Spring Security 会将 SecurityContextHolder 中的数据拿出来保存到 Session 中,同时将 SecurityContexHolder 中的数据清空。

2.为什么引入 Spring Security 所以请求就要被拦截呢?

        原因是Springboot自动化配置,会自动引入一系列的FilterChain,具体查看WebSecurityConfiguration的源码

FilterChain

        Spring Security 提供了 30 多个过滤器 ,默认情况下Spring Boot 在对 Spring Security 进入自动化配置时,会创建一个名为 SpringSecurityFilerChain 的过滤器,并注入到 Spring 容器中,这个过滤器将负责所有的安全管理,包括用户认证、授权、重定向到登录页面等。

        需要注意的是,默认过滤器并不是直接放在 Web 项目的原生过滤器链中,而是通过一个FlterChainProxy 来统一管理。Spring Security 中的过滤器链通过 FilterChainProxy 嵌入到 Web项目的原生过滤器链中。FilterChainProxy 作为一个顶层的管理者,将统一管理 Security Filter。FilterChainProxy 本身是通过 Spring 框架提供的 DelegatingFilterProxy 整合到原生的过滤器链中。

       自动化配置(具体查看Springbootwebsecurityconfiguration源码)

        所以当要使用自定义的配置时只需要继承websecurityconfigureradater重写configure方法

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值