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

时间:2012-03-28 08:50:13

标签: spring authentication spring-security

在使用Spring Security实现某些安全方面时,我注意到AuthenticationUserDetails都有重复的方法,如getAuthoritiesgetCredentials等等。

这背后的目标是什么?对我来说,这似乎是一种无用的冗余。

编辑:由于人们懒得检查签名。两个接口都有相同的方法。我不是指getCredentialsgetAuthorities是相同的。为什么要让人们做出这样的假设?

2 个答案:

答案 0 :(得分:5)

UserDetails 用于安全目的,它只是一个“用户信息”bean。 Spring Security使用Authentication个实例。因此Authentication实例通常只有用户登录所需的信息(基本上是用户名,凭据和角色)。 UserDetails更通用,可以包含与用户管理相关的任何内容(例如联系信息,帐户信息,照片等)。

通常,您将拥有Authentication实例支持的UserDetails实例。

答案 1 :(得分:-2)

getAuthorities 

用于基于角色的安全性。它通常是SpringSecurity中的有用功能。

getCredentials

如果委托人是正确的,则用于获取密码或散列密码。在安全方面也是需要的方法。

如果您确定,您不需要此功能,则可以使用空方法覆盖此方法。