为什么Spring在Authentication和UserDetails中有重复字段?
在使用Spring security实现一些安全方面时,我注意到和都有重复的方法,如为什么Spring在Authentication和UserDetails中有重复字段?,spring,authentication,spring-security,Spring,Authentication,Spring Security,在使用Spring security实现一些安全方面时,我注意到和都有重复的方法,如getAuthories,getCredentials等等 这背后的目的是什么?对我来说,这似乎是无用的冗余 编辑:因为人们懒得检查签名。两个接口具有相同的方法。我不是指getCredentials和getAuthorities是相同的。为什么他妈的让人们这么想 getAuthorities 用于基于角色的安全性。它通常是SpringSecurity中有用的特性 getCredentials 用于获取密码或
getAuthories
,getCredentials
等等
这背后的目的是什么?对我来说,这似乎是无用的冗余
编辑:因为人们懒得检查签名。两个接口具有相同的方法。我不是指getCredentials
和getAuthorities
是相同的。为什么他妈的让人们这么想
getAuthorities
用于基于角色的安全性。它通常是SpringSecurity中有用的特性
getCredentials
用于获取密码或哈希密码以检查主体是否正确。在安全性方面也是必要的方法
如果确定不需要此功能,则可以使用空方法覆盖此方法
UserDetails
不用于安全目的,它只是一个“用户信息”bean。Spring Security使用身份验证
实例。因此,Authentication
实例通常只有让用户登录所需的信息(基本上是用户名、凭据和角色)UserDetails
更通用,可以包括与用户管理相关的任何内容(如联系信息、帐户信息、照片等)
通常,您将拥有一个由
UserDetails
实例支持的Authentication
实例。似乎就是这样,但我仍然能够在几个Spring类中找到几个UserDetails\getPassword
调用。我想这是遗产。UserDetails
类不像Authentication
类那样通用。对此我也感到惊讶,我看不到一个好的解释。我实现了一个自定义AuthenticationProvider,在authenticate()
方法中,我必须返回以下内容:返回新用户名PasswordAuthenticationToken(新用户(用户名、密码、权限)、密码、权限)代码>经过几次Spring Security的检查后,我认为这是:Spring Security只使用“代码>身份验证< /代码>。代码>用户详细信息
仅用于客户端代码。由于编码日期不同,它们以某种方式相交。所以请记住,身份验证
不适合您。希望他们能在SpringSecurity3.0中进行清理。