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

Mic*_*l-O 5 authentication spring spring-security

同时实现与Spring Security的一些安全方面,我注意到,双方AuthenticationUserDetails有重复的方法,如getAuthorities,getCredentials等等.

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

编辑:由于人们懒得检查签名.两个接口都有相同的方法.我不是指那个getCredentials而且getAuthorities是一样的.为什么这会让人们做出这样的假设?

gpe*_*che 5

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

通常,您将拥有一个Authentication由实例支持的UserDetails实例.