当前位置: 首页 > article >正文

Spring Security(maven项目) 3.0.2.8版本

前言:

通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。

涉及的基础认知:

对象,继承与实现

正片:内存认证

标题:内存认证

认证,怎么样的认证?内存认证,怎么利用内存实现认证?

看到正文第一句:

Spring Security 的InMemoryUserDetailsManager(内存中的用户详细管理器)实现了UserDetailsService,为存储在内存中的基于用户名/密码的认证提供支持,InMemoryUserDetailsManager通过实现UserDetailsManager接口提供了对UserDetails的管理。

专业词语翻译(百度):

InMemoryUserDetailsManager        ·        内存中的用户详细管理器

UserDetails        ·        用户明细

UserDetailService        ·        用户详细服务

UserDetailsManager        ·        用户详细管理器

先看这句:为存储在内存中的基于用户名/密码的认证提供支持

谁为存储在内存中的基于用户名/密码的认证提供支持?

再简单点,谁提供支持?

看到上一句:Spring Security 的InMemoryUserDetailsManager(内存中的用户详细管理器)实现了UserDetailsService

第一次翻译(去除形容词):InMemoryUserDetailsManager(内存中的用户详细管理器)实现了UserDetailsService

第二次翻译(翻译成代码):InMemoryUserDetailsManager 类 实现 UserDetailsService接口

翻译成代码我们就知道谁是主体了

InMemoryUserDetailsManager 类是主体

合并一下

InMemoryUserDetailsManager为存储在内存中的基于用户名/密码的认证提供支持

为什么InMemoryUserDetailsManage能提供支持呢?因为它实现了UserDetailsService接口。

看到下一句

InMemoryUserDetailsManager通过实现UserDetailsManager接口提供了对UserDetails的管理。

那我们可以抽象出

InMemoryUserDetailsManage实现了两个接口,通过这两个接口分别完成了对内存中的用户名/密码提供支持和对UserDetails进行管理支持

看到源码

它实现了UserDetailsManage,但是没有UserDetailsService只有UserDetailsPasswordService

不知是官方的问题还是源码的问题,从源码来看,实现的是UserDetailsPasswordService接口而非UserDetailsService,但是以官方文档为主,不就是多了一个单词,而且官方文档也说了,对内存中的用户名/密码认证的支持,密码也是一部分

下一段:

当Spring Security 被配置为 接受用户名和密码的认证时,它就会使用基于 UserDetails 的认证

注意:要配置接受用户名和密码,要不然无效

两个代码的区别在于密码是否加密

没有具体的实践可供体验(作者水平不够)

总结:

InMemoryUserDetailsManage 是Spring Security 支持内存认证的核心,其原因在于实现了接口UserDetailsServic,它除了支持内存认证还支持对UserDetails管理,因为它还实现了UserDetailsManage


http://www.kler.cn/a/523694.html

相关文章:

  • 基于Django的个人博客系统的设计与实现
  • mysql.sock.lock 导致mysql重启失败
  • C++,STL,【目录篇】
  • Edge-TTS在广电系统中的语音合成技术的创新应用
  • 独立成分分析 (ICA):用于信号分离或降维
  • JavaScript_02 表单
  • 17.Word:李楠-学术期刊❗【29】
  • C语言中string.h头文件功能介绍
  • Vscode的AI插件 —— Cline
  • Vue Vine:Vue 组件开发的新范式探索
  • spark3.5.4兼容python 3.10.x以下版本
  • 环境搭建--vscode
  • Object类(2)
  • 使用 KNN 搜索和 CLIP 嵌入构建多模态图像检索系统
  • [论文总结] 深度学习在农业领域应用论文笔记14
  • 人工智能:农业领域的变革力量
  • 如何制作浪漫风格的壁纸
  • 【PowerShell专栏】利用PowerShell开启端口的监听
  • GEE | 提取随机样本点的数据,以CHIRPS降水为例
  • Kotlin函数式API
  • 【蓝桥杯嵌入式入门与进阶】2.与开发板之间破冰:初始开发板和原理图2
  • 【Java基础-41.5】深入解析Java异常链:构建清晰的错误追踪体系
  • [Dialog屏幕开发] 设置搜索帮助
  • 双指针算法精解:对撞指针与快慢指针的妙用与实践
  • 2025年大数据毕业设计选题推荐:数据分析与可视化 数据挖掘
  • 获取metadata耗时对比(libtag/ffmpeg/gstreamer)