源码

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;

}

posted @ 2021-10-19 21:04  xl4ng  阅读(98)  评论(0编辑  收藏  举报