Spring Security:UserDetailsManager 接口是做啥用的?和更多!
Posted
技术标签:
【中文标题】Spring Security:UserDetailsManager 接口是做啥用的?和更多!【英文标题】:Spring Security: What is the UserDetailsManager interface used for? And more!Spring Security:UserDetailsManager 接口是做什么用的?和更多! 【发布时间】:2010-10-18 06:29:03 【问题描述】:我对@987654321@ 接口很好奇。参考指南中没有提到它,在 JavaDoc 中它被描述为:
的扩展 UserDetailsService 提供 创建新用户和更新的能力 现有的。
在实现UserDetailsManager 接口时,您必须实现它自己的五种方法,其中一种方法继承自它扩展的 UserDetailsService。
这些方法是:createUser、updateUser、deleteUser、changePassword、userExists 和继承的方法 loadUserByUsername。
在Spring Security框架v2.0.4中有两个UserDetailsManager的具体实现:JdbcUserDetailsManager和LdapUserDetailsManager。
接口和具体实现均由 Luke Taylor 实现。
Spring Security 框架似乎从不使用具体的实现。
我的结论是,该界面纯粹是作为一个方便的界面,框架的用户可能会或可能不会决定使用它。也许有人认为以后会出现更具体的实现并为框架用户承担一些工作?
我正在寻找更多信息。要使信息有价值,它必须直接或间接(我想这很可能)来自对框架开发过程有深入了解的人。其他任何人都可以猜测,就像我在上面所做的那样。
如果它只是一个方便的界面。 是否还有更多此类接口和类未出现在参考指南中?我很想知道,因为它可能对我在开发过程中有所帮助。
查看所有接口和类以查看框架中实际使用了哪些接口和类有点繁琐,如果涉及反射,也可能容易出错(因此调用了我的 IDE 无法识别的调用)。
【问题讨论】:
此外,LdapUserDetailsManager 对用户和组的位置做出各种假设(cn=users, cn=groups)。这些是硬编码的,因此在许多情况下,这个默认实现是无用的,只是一个示例。 【参考方案1】:你的猜测是正确的。根据original feature request 的说法,它被添加“因为它是一个非常普遍的特性,并且通过扩展现有接口和类可以相当简单地实现。”
There has been talk 创建一个单独的项目来填充这个界面,但是这还没有生效。
【讨论】:
以上是关于Spring Security:UserDetailsManager 接口是做啥用的?和更多!的主要内容,如果未能解决你的问题,请参考以下文章
Spring mvc / security:从spring security中排除登录页面
Spring Security:2.4 Getting Spring Security
没有 JSP 的 Spring Security /j_spring_security_check