Spring Security : 概念模型接口 UserDetailsService 用户详情服务

博客介绍了一个用于抽象建模系统管理用户详情服务能力的概念模型接口。该接口只定义一个通过用户名获取用户详情的方法,若用户记录不存在则抛异常。方法返回包含用户名、账号状态等信息的可序列化对象,还提及了继承关系和源代码版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

介绍

UserDetailsServiceSpring Security提供的一个概念模型接口,用于抽象建模系统提供这样一种服务能力:管理用户详情。

UserDetailsService只定义了一个方法UserDetails loadUserByUsername(String username) throws UsernameNotFoundException,声明通过用户名username可以获取用户详情UserDetails,如果对应用户名username的用户记录(一般也称作用户账号)不存在,则抛出异常UsernameNotFoundException

注意方法loadUserByUsername的具体实现在比较用户名时可以大小写区分也可以大小写不区分,具体怎么做留给实现者决定。

方法loadUserByUsername如果找到一个用户记录的话会返回一个可序列化的UserDetails对象,它包含如下信息 :

  • 用户名
  • 账号是否过期
  • 账号是否被锁定
  • 账号安全凭证(通常意义上指的就是的密码)是否过期
  • 账号是否被禁用
  • 所赋予的权限集合

继承关系

UserDetailsService
从此继承关系图可见,UserDetailsServiceSpring Security的一个基础接口。

源代码

源代码版本 : Spring Security Core 5.1.4.RELEASE

public interface UserDetailsService {
	// ~ Methods
	// ==========================================================

	/**
	 * Locates the user based on the username. In the actual implementation, the search
	 * may possibly be case sensitive, or case insensitive depending on how the
	 * implementation instance is configured. In this case, the UserDetails
	 * object that comes back may have a username that is of a different case than what
	 * was actually requested..
	 *
	 * @param username the username identifying the user whose data is required.
	 *
	 * @return a fully populated user record (never null)
	 *
	 * @throws UsernameNotFoundException if the user could not be found or the user has no
	 * GrantedAuthority
	 */
	UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}

参考文章

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值