凭证容器
CredentialsContainer
接口表明实现对象包含敏感数据,Spring Security 在成功认证后,会在内部使用此接口来擦除认证凭证。Spring Security 的大多数内部领域类都实现了此接口,例如 User
和 UsernamePasswordAuthenticationToken
。
ProviderManager
会检查返回的 Authentication
是否实现了此接口。如果实现了,它会调用 eraseCredentials
方法 从对象中移除凭证。
如果你希望你的自定义认证对象在认证后被擦除凭证,你应该确保这些类实现了 CredentialsContainer
接口。
编写自己的 AuthenticationProvider
实现的用户应该在其中创建并返回一个合适的 Authentication
对象,不包含任何敏感数据,而不是使用此接口。