• 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负责把认证对象放到请求中。如果前边认证成功,就把认证信息放到线程中,如果需要认证就直接跳转到认证页面。

  • 相关阅读:
    读《持续交付2.0》
    “兼职”运维的常用命令
    技术管理者怎样跳出“泥潭”
    使用RabbitMQ实现接口补偿
    dotNET Core 中怎样操作 AD?
    dotNET Core实现分布式环境下的流水号唯一
    Git 远程仓库
    分之管理
    git 基本操作----git diff
    git 基本操作----git reset、log
  • 原文地址:https://www.cnblogs.com/liuyu666/p/14312049.html
Copyright © 2020-2023  润新知