Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Spring在Authentication和UserDetails中有重复字段?_Spring_Authentication_Spring Security - Fatal编程技术网

为什么Spring在Authentication和UserDetails中有重复字段?

为什么Spring在Authentication和UserDetails中有重复字段?,spring,authentication,spring-security,Spring,Authentication,Spring Security,在使用Spring security实现一些安全方面时,我注意到和都有重复的方法,如getAuthories,getCredentials等等 这背后的目的是什么?对我来说,这似乎是无用的冗余 编辑:因为人们懒得检查签名。两个接口具有相同的方法。我不是指getCredentials和getAuthorities是相同的。为什么他妈的让人们这么想 getAuthorities 用于基于角色的安全性。它通常是SpringSecurity中有用的特性 getCredentials 用于获取密码或

在使用Spring security实现一些安全方面时,我注意到和都有重复的方法,如
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中进行清理。