在使用Spring Security实现某些安全方面时,我注意到Authentication
和UserDetails
都有重复的方法,如getAuthorities
,getCredentials
等等。
这背后的目标是什么?对我来说,这似乎是一种无用的冗余。
编辑:由于人们懒得检查签名。两个接口都有相同的方法。我不是指getCredentials
和getAuthorities
是相同的。为什么要让人们做出这样的假设?
答案 0 :(得分:5)
UserDetails
不用于安全目的,它只是一个“用户信息”bean。 Spring Security使用Authentication
个实例。因此Authentication
实例通常只有用户登录所需的信息(基本上是用户名,凭据和角色)。 UserDetails
更通用,可以包含与用户管理相关的任何内容(例如联系信息,帐户信息,照片等)。
通常,您将拥有Authentication
实例支持的UserDetails
实例。
答案 1 :(得分:-2)
getAuthorities
用于基于角色的安全性。它通常是SpringSecurity中的有用功能。
getCredentials
如果委托人是正确的,则用于获取密码或散列密码。在安全方面也是需要的方法。
如果您确定,您不需要此功能,则可以使用空方法覆盖此方法。