💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
如本参考指南前面所述,大多数身份验证提供程序都利用`UserDetails`和`UserDetailsService`接口。 回想一下`UserDetailsService`的约定是一个单一的方法: ~~~ UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; ~~~ 返回的`UserDetails`是一个接口,提供保证非空身份验证信息的getter,例如用户名,密码,授予的权限以及用户帐户是启用还是禁用。 大多数身份验证提供程序将使用`UserDetailsService`,即使用户名和密码实际上未用作身份验证决策的一部分。 他们可能仅仅为了`GrantedAuthority`信息使用返回的`UserDetails`对象,因为其他一些系统(如LDAP或X.509或CAS等)承担了实际验证凭据的责任。 鉴于`UserDetailsService`实现起来非常简单,用户应该可以使用自己选择的持久性策略轻松检索身份验证信息。 话虽如此,Spring Security确实包含了一些有用的基础实现,我们将在下面介绍。