【问题标题】:Implementing UserDetails and CredentialsContainer in Spring Security在 Spring Security 中实现 UserDetails 和 CredentialsContainer
【发布时间】:2015-08-10 23:05:26
【问题描述】:

我想在登录后删除用户的凭据,所以我在我的 Account 类中实现了 UserDetails 和 CredentialsContainer。

@Entity
public class Account implements UserDetails, CredentialsContainer {
...

但是,在文档中它说 CredentialsContainer 仅供内部框架使用

所以我想知道这是否会成为未来的问题。

【问题讨论】:

  • 如果是内部使用,你为什么要实现它。有什么好的理由吗?我可以理解实现 UserDetails。
  • CredentialsContainer 有 eraseCredentials 方法,我用它在用户登录后擦除用户密码,这是默认行为,您可以使用 erase-credentials="false" 更改它。
  • 感谢您提供的信息,但不建议使用明文密码鬼混。其次,您的应用程序可能会受到法律限制,因为您可以访问明文密码。此外,还有一个特别好的理由称为安全性,这就是为什么擦除凭据的默认值为 true 的原因。此外,这仍然没有解释你为什么要实现那个类,你告诉我它的功能,而不是你想用它做什么。
  • 只是为了保持其默认行为。

标签: java spring spring-security


【解决方案1】:

您可以实现该接口。但是,如果您正在编写自己的 AuthenticationProvider,则不打算实现它。来自 javadoc:

仅供内部框架使用。正在编写自己的用户 AuthenticationProvider 实现应该创建和 在那里返回一个适当的 Authentication 对象,减去 任何敏感数据,而不是使用此接口。

因此您可以实现它,以便 Spring Security 将在您的应用程序上调用 eraseCredentials。但是,不建议您在CredentialsContainer 上调用eraseCredentials。

【讨论】:

    猜你喜欢
    • 2019-08-22
    • 2010-11-07
    • 2014-11-21
    • 2016-04-27
    • 2015-01-17
    • 2013-09-09
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多