JAVA全系列 教程
3762个小节阅读:7091.2k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在实际项目中,认证逻辑是需要自定义控制的。将UserDetailsService
接口的实现类放入Spring容器即可自定义认证逻辑。InMemoryUserDetailsManager
就是UserDetailsService
接口的一个实现类,它将登录页传来的用户名密码和内存中用户名密码做匹配认证。当然我们也可以自定义UserDetailsService
接口的实现类。
xxxxxxxxxx
public interface UserDetailsService {
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}
UserDetailsService
的实现类必须重写loadUserByUsername
方法,该方法定义了具体的认证逻辑,参数username
是前端传来的用户名,我们需要根据传来的用户名查询到该用户(一般是从数据库查询),并将查询到的用户封装成一个UserDetails对象,该对象是Spring Security提供的用户对象,包含用户名、密码、权限。Spring Security会根据UserDetails对象中的密码和客户端提供密码进行比较。相同则认证通过,不相同则认证失败。
实时效果反馈
1. SpringSecurity自定义认证逻辑需要实现的接口是
A UserService
B DetailsService
C UserDetails
D UserDetailsService
2. 在SpringSecurity中,UserDetailsService
的实现类必须重写方法
A loadUser
B loadUserByUsername
C loadUserByPassword
D loadUserById
答案
1=>D 2=>B