spring - Spring Security:AuthenticationProvider 和 UserDetailsService 之间的链接
问题描述
在一些 Spring Security 代码中,我可以看到:
@Override
public void configure(AuthenticationManagerBuilder auth) {
auth.userDetailsService(myUserDetailsService);
}
据我了解,AuthenticationManager
管理一个列表AuthenticationProvider
并且每个AuthenticationProvider
都有自己的UserDetailsService
实现。
这是上面的代码不明白的地方:写的时候auth.userDetailsService(...)
,AuthenticationProvider
用的是哪个?是否创建了一个新的?因为 and 之间有直接联系AuthenticationManager
,UserDetailsService
但没有关于AuthenticationProvider
解决方案
当你这样做时,auth.userDetailsService(myUserDetailsService);
你正在添加一个DaoAuthenticationProvider
使用你UserDetailsService
提供的新的。
更具体地说,在调用该AuthenticationManagerBuilder#userDetailsService
方法时,您正在设置defaultUserDetailsService
属性并应用 type 的配置DaoAuthenticationConfigurer
。
然后,此配置将添加到可以使用DaoAuthenticationProvider
的列表中。AuthenticationProvider
AuthenticationManagerBuilder
您可以在源代码中找到更多详细信息。
推荐阅读
- python - python中使用的min和max函数的输出结果是一样的。为什么?
- python-3.x - 在不使用 for 循环的情况下过滤嵌套列表?
- liquibase - Flyway 或 LiquiBase 可以在当前数据库和最新迁移之间进行区分吗?
- ios - 如何管理相互打开和重新打开的 UIViewController
- typescript - 如何通过打字稿中的泛型类型获取可选参数
- html - 具有固定标题和滚动的表格缩小了单元格大小
- c# - 在 Linq 中使用 Select() 进行异步等待
- javascript - 更改按钮颜色和背景颜色 onclick
- java - 了解异步 Logger 中的环形缓冲区
- c# - 实体框架代码优先迁移失败,更新数据库