zoukankan      html  css  js  c++  java
  • SpringSecurity粗略流程

    1、本质是过滤链

    一、关于配置

    1、继承WebSecurityConfigurerAdapter类

    2、重写两个configure,一个是配置认证策略,一个是配置AuthenticationManagerBuilder,配置它的用户信息,它是AnthenticationManager构建者

    二、基本流程

    1、首先UsernamePasswordAuthenticationFilter过滤请求,默认是过滤POST的/login请求,获取username和password,用UsernamePasswordAuthenticationToken包装(它就实现了Authentication)。

    2、UsernamePasswordAuthenticationToken作为参数调用AuthenticationManager的authentication()方法,它是一个认证管理器(接口),有很多认证实现类,默认实现类是ProviderManager,ProviderManager管理许多AuthenticationProvider(认证器),遍历找到适合的认证器去认证。

    3、认证器会调用之前实现的UserDetailSevice接口,继承loadUserByUsername方法,这里去数据库获取用户信息,然后返回一个UserDetail对象。

    4、认证器拿到UserDetail后,做一些判断没问题后,返回一个authentication对象

    三、如何实现共享

    1、最开始请求先经过SecurityContextPersistenceFilter过滤器,目的就是检查session是否有SecurityContext信息(里边包含authentication信息),没有就new一个,又把SecurityContext放到SecurityContextHolder 中,响应的时候是从该线程获取新的authentication,然后放到SecurityContext中。

    2、FilterSecurityInterceptor负责把认证对象放到请求中。如果前边认证成功,就把认证信息放到线程中,如果需要认证就直接跳转到认证页面。

  • 相关阅读:
    三种负载均衡 Nginx、Dubbo、Ribbon 区别
    Docker基础学习
    主从复制报错2061:Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection
    LRU、LFU算法区别
    CAP理论原理
    Mysql安装服务到Window服务列表
    从零开始掌握 HAProxy 负载均衡器,详细!!
    一举拿下Nginx
    Nginx 负载均衡配置误区
    Linux自动化技巧
  • 原文地址:https://www.cnblogs.com/liuyu666/p/14312049.html
Copyright © 2011-2022 走看看