在使用AuthenticationManagerBuilder
构建AuthenticationManager
时,我们通常会遇到以下三种SecurityConfigurer
:
-
InMemoryUserDetailsManagerConfigurer
- 基于内存存储用户账号详情的安全配置器,
- 最终生成一个
DaoAuthenticationProvider
,内含一个UserDetailsService InMemoryUserDetailsManager
- 通常用于开发调试环境,不用于生产环境
-
JdbcUserDetailsManagerConfigurer
- 基于关系型数据库存储用户账号详情的安全配置器
- 最终生成一个
DaoAuthenticationProvider
,内含一个UserDetailsService JdbcUserDetailsManager
-
LdapAuthenticationProviderConfigurer
- 基于
LDAP
存储用户账号详情的安全配置器 - 最终生成一个
LdapAuthenticationProvider
- 基于
这里需要注意的是 :
-
InMemoryUserDetailsManagerConfigurer
和JdbcUserDetailsManagerConfigurer
有更多的相似性,最终都是生成一个DaoAuthenticationProvider
,内含一个UserDetailsService
;二者所面向的用户账号详情存储形式类似,所以统一抽象成UserDetailsManagerConfigurer
。 -
InMemoryUserDetailsManagerConfigurer
/JdbcUserDetailsManagerConfigurer
和LdapAuthenticationProviderConfigurer
更不同,LdapAuthenticationProviderConfigurer
所面向的用户账号存储形式是LDAP
,所以单独抽象。
以上3种SecurityConfigurer
在类层次关系上,如下图所示 :