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 【问题描述】:

我对@9​​87654321@ 接口很好奇。参考指南中没有提到它,在 JavaDoc 中它被描述为:

的扩展 UserDetailsService 提供 创建新用户和更新的能力 现有的。

在实现UserDetailsManager 接口时,您必须实现它自己的五种方法,其中一种方法继承自它扩展的 UserDetailsS​​ervice。

这些方法是: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

Spring-Security

Spring Security 登录错误:HTTP 状态 404 - /j_spring_security_check

未调用 Spring Security j_spring_security_check