🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
默认情况下(从Spring Security 3.1开始),`ProviderManager`将尝试清除`Authentication`对象中的任何敏感凭证信息,该信息由成功的身份验证请求返回。这可以防止密码保留的时间超过必要的时间。 当您使用用户对象的缓存时,这可能会导致问题,例如,提高无状态应用程序的性能。如果`Authentication` 包含对缓存中对象的引用(例如`UserDetails`实例)并且已删除其凭据,则将无法再对缓存的值进行身份验证。如果使用缓存,则需要考虑这一点。一个显而易见的解决方案是首先在缓存实现中或在创建返回的`Authentication`对象的`AuthenticationProvider`中制作对象的副本。或者,您可以在`ProviderManager`上禁用`eraseCredentialsAfterAuthentication`属性。有关更多信息,请参阅Javadoc。