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

  • 相关阅读:
    菜鸟浅谈软件开发项目管理
    中国准货币体系的概要简析
    使用dockercompose安装wordpress
    货币乘数
    安全测试的相关内容
    TCP三次握手和四次挥手
    HTTP协议相关
    描述浏览器登录的过程
    AJAX相关知识
    什么是热钱
  • 原文地址:https://www.cnblogs.com/liuyu666/p/14312049.html
Copyright © 2011-2022 走看看