Spring Security(maven项目) 3.0.2.8版本

发布于:2025-02-10 ⋅ 阅读:(33) ⋅ 点赞:(0)

前言:

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

涉及的基础认知:

对象,继承与实现

正片:内存认证

标题:内存认证

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

看到正文第一句:

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


网站公告

今日签到

点亮在社区的每一天
去签到