Spring Security中提供的用户对象定义接口UserDetails
/**
* 提供核心用户信息。
* 出于安全目的,Spring Security 不直接使用实现。 它们只是存储用户信息,然后将这些信息封装到Authentication对象中。 这允许将非安全相关的用户信息(例如电子邮件地址、电话号码等)存储在方便的位置。
* 具体的实现必须特别小心,以确保为每个方法详细说明的非空契约得到执行。 请参阅User以获取参考实现(您可能希望在代码中扩展或使用它)。
* 也可以看看:
* UserDetailsService ,用户UserCache
*/
public interface UserDetails extends Serializable {
/**
* 返回授予用户的权限。 不能返回null 。
* 返回:权限,按自然键排序(从不为null )
*/
Collection<? extends GrantedAuthority> getAuthorities();
/**
* 返回用于验证用户的密码。
* 返回:密码
*/
String getPassword();
/**
* 返回用于验证用户的用户名。 不能返回null 。
* 返回:用户名(从不为null )
*/
String getUsername();
/**
* 指示用户的帐户是否已过期。 无法验证过期帐户。
* 返回:true如果用户的帐户是否有效(即未过期), false如果不再有效(即到期)
*/
boolean isAccountNonExpired();
/**
* 指示用户的帐户是否已过期。 无法验证过期帐户。
* 返回:true如果用户的帐户是有效(即未过期), false如果不再有效(即到期)
*/
boolean isAccountNonLocked();
/**
* 指示用户的凭据(密码)是否已过期。 过期的凭据会阻止身份验证。
* 返回:true如果用户的证书是有效的(即非到期), false如果不再有效(即到期)
*/
boolean isCredentialsNonExpired();
/**
* 指示用户是启用还是禁用。 无法对禁用的用户进行身份验证。
* 返回:true如果用户已启用, false否则
*/
boolean isEnabled();
}
提供用户数据源的接口
package org.springframework.security.core.userdetails;
/**
* 加载用户特定数据的核心接口。
* 它在整个框架中用作用户 DAO,并且是DaoAuthenticationProvider使用的策略。
* 该接口只需要一种只读方法,这简化了对新数据访问策略的支持。
*/
public interface UserDetailsService {
/**
* 根据用户名定位用户。 在实际实现中,搜索可能区分大小写,也可能不区分大小写,具体取决于实现实例的配置方式。 在这种情 * 况下,返回的UserDetails对象的用户名可能与实际请求的用户名不同。
* 参数:
* username – 标识需要其数据的用户的用户名。
* 返回:
* 完全填充的用户记录(从不为null )
*/
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}