凭证容器

CredentialsContainer 接口表明实现对象包含敏感数据,Spring Security 在成功认证后,会在内部使用此接口来擦除认证凭证。Spring Security 的大多数内部领域类都实现了此接口,例如 UserUsernamePasswordAuthenticationToken

ProviderManager 会检查返回的 Authentication 是否实现了此接口。如果实现了,它会调用 eraseCredentials 方法 从对象中移除凭证。

如果你希望你的自定义认证对象在认证后被擦除凭证,你应该确保这些类实现了 CredentialsContainer 接口。

编写自己的 AuthenticationProvider 实现的用户应该在其中创建并返回一个合适的 Authentication 对象,不包含任何敏感数据,而不是使用此接口。