Spring Security原理分析

  • 学习Spring Security原理,分析Spring Security的执行流程

Spring Security过滤器链

Spring Security原理分析

1、Spring Security过滤器链
  • 发起请求
  • 用于身份认证的过滤器
    • 1、UsernamePasswordAuthentication filter用于处理表单登录
    • 2、Basic Authentication filter 用于认证HttpBasic登录
    • 上面的步骤,如果是表单登录那么久出发表单登录过滤器,否则进入Basic过滤器
      • 注意:
        • 实际应用中过滤器链不止几条,其实有很多条,不配置就不会生效
  • ExceptionTranslationFilter 过滤器
  • 根据FilerSecurity Interceptor等过滤器抛出来的异常做相应的处理,(例如没有登录,会跳到用户登录界面)
    • FilerSecurityInterceptor 过滤器
      • 是Spring Security的最后一环
    • 经过Spring Security 到达 REST API
2、Debug断点调试探究Spring Security的执行顺序
  • 将Spring Security配置成为表单登录,访问Web,http://127.0.0.1:8080/user
        import org.springframework.context.annotation.Configuration;
        import org.springframework.security.config.annotation.web.builders.HttpSecurity;
        import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
        
        @Configuration
        public class SecurityConfig extends WebSecurityConfigurerAdapter {
        
            @Override
            protected void configure(HttpSecurity http) throws Exception {
                http.formLogin()
                        .and()
                        .authorizeRequests()
                        .anyRequest()
                        .authenticated();
            }
        }
  • 程序首先进入FilterSecurityInterceptor
    • 程序先进入FilterSecurityInterceptor方法,因为没有携带参数,之前的过滤器都不起作用,在该过滤器中决定能否访问后面的内容,在配置中设置为所有的请求都需要进行登录认证,因此在此处会抛出异常
 InterceptorStatusToken token = super.beforeInvocation(fi);
  • 到达ExceptionTranslationFilter
    • 上一步骤中的异常到达ExceptionTranslationFilter这个拦截器中,在这个拦截器中对异常进行处理,处理实则为重定向,跳到默认的登录页面上
        * SecurityContextHolderAwareRequestFilter
        * FilterChainProxy
        * RequestCacheAwareFilter
        * DefaultLogoutPageGeneratingFilter
        * OncePerRequestFilter
        * AbstractAuthenticationProcessingFilter
        * LogoutFilter
        * HeaderWriterFilter
        * SecurityContextPersistenceFilter
        * ApplicationFilterChain
        * WebAsyncManagerIntegrationFilter
        * ...
  • 经过一些列Filter,页面被重定向到login页
    在这里插入图片描述
    * 输入用户名和密码

  • 到达断点UsernamePasswordAuthenticationFilter

    • 拿到用户名和密码
  • 达到断点FilterSecurityInterceptor
    * 处理完login跳转到之前/user的请求
    * 自定义处理完成后,前端拿到请求的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值