SpringSecurity源码中核心类

SpringSecurity源码

第一部分 核心类

  • SecurityBuilder
  • HttpSecurity
  • WebSecurity
  • SecurityFilterChain
  • FilterChainProxy

SecurityBuilder是安全构架器,HttpSecurity和WebSecurity都是SecurityBuilder的实现类,HttpSecurity通过build()构建了一个SecurityFilterChain调用链。 WebSecurity构建了一个FilterChainProxy,他是一个Filter过滤器,其内部维护了一个filterChains(SecurityFilterChain的链表),doFilter执行时,利用装饰器模式+责任链模式先调用SecurityFilterChain,再调用原生chain.doFilter(req, resp)继续执行

第二部分核心类

  • HttpSecurity内容
  • SecurityConfigurer
  • AbstractConfiguredSecurityBuilder

SecurityBuilder用来构建安全对象,安全对象包括:ttpSecurity、FilterChainProxy、AuthenticationManager、SecurityConfigurer用来配置安全对象构建器(SecurityBuilder),典型的有

FormLoginConfigurer、CsrfConfigurer

第三部分

  • Authentication

  • AuthenticationManage

  • AuthenticationManageBuilder

  • ProviderManager

  • AuthenticationProvider

    其中Authentication为认证信息,AuthenticationManage可以用来认证,其中有一个重要的方法 Authentication authenticate(Authentication authentication),AuthenticationManagerBuilder用来构建

    AuthenticationManager的,即ProviderManager,是一个重要的ProviderManager 实现类。即ProviderManager中存储了AuthenticationProvider集合,认证的时候 先查看是否support,是的话,开始认证

第四部分

  • UserDetailsService
  • DaoAuthenticationProvider
  • AbstractUserDetailsAuthenticationProvider
  • UsernamePasswordAuthenticationFilter
  • FormLoginConfigurer

用户名密码登录所使用到的类,UserDetailsService用来加载用户信息的,DaoAuthenticationProvider是一个provider(结合UserDetailsService进行加载用户信息),用来做认证的,AbstractUserDetailsAuthenticationProvider是DaoAuthenticationprovider的父类。UsernamePasswordAuthenticationFilter是一个过滤器,生成一个认证对象,在通过providerManager来进行认证,核心就是利用DaoAuthenticationProvider来进行认证。FormLoginConfigurer用于配置用户名密码相关信息,通过http来进行配置。

第五部分

  • SecurityContext
  • SecurityContextHolder
  • SecurityContextPersistenceFilter
  • SecurityContextRepository
  • SecurityContextConfigurer
相关推荐
工业互联网专业1 天前
Python毕业设计选题:基于python的豆瓣电影数据分析可视化系统-flask+spider
vue.js·python·数据分析·flask·毕业设计·源码·课程设计
工业互联网专业3 天前
Python毕业设计选题:基于Spark的国漫推荐系统的设计与实现-django+spider
vue.js·python·spark·django·毕业设计·源码·课程设计
柯南二号5 天前
SpringSecurity 鉴权认证入门讲解
认证·鉴权·springsecurity
工业互联网专业5 天前
Python毕业设计选题:基于django+vue的二手物品交易系统
vue.js·python·django·毕业设计·源码·课程设计
工业互联网专业5 天前
Python毕业设计选题:基于BS架构的在线学习与推荐系统的设计与实现-django
vue.js·python·django·毕业设计·源码·课程设计
xcLeigh6 天前
VUE3实现简洁的特色美食网站源码
前端·源码·vue3
NiNg_1_2347 天前
SpringSecurity入门
后端·spring·springboot·springsecurity
程序猿麦小七7 天前
今天给在家介绍一篇基于jsp的旅游网站设计与实现
java·源码·旅游·景区·酒店
工业互联网专业8 天前
Python毕业设计选题:基于Django+uniapp的公司订餐系统小程序
vue.js·python·小程序·django·uni-app·源码·课程设计
程序员小海绵【vincewm】8 天前
【设计模式】结合Tomcat源码,分析外观模式/门面模式的特性和应用场景
设计模式·tomcat·源码·外观模式·1024程序员节·门面模式