JAVA全系列 教程
3762个小节阅读:7092.5k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
接下来我们连接数据库进行认证:
准备数据库数据
xxxxxxxxxx
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255),
`password` varchar(255) ,
`phone` varchar(255) ,
PRIMARY KEY (`id`)
);
INSERT INTO `users` VALUES (1, 'baizhan', 'baizhan', '13812345678');
INSERT INTO `users` VALUES (2, 'sxt', 'sxt', '13812345678');
编写用户实体类
xxxxxxxxxx
@Data
public class Users {
private Integer id;
private String username;
private String password;
private String phone;
}
编写dao接口
xxxxxxxxxx
public interface UsersMapper extends BaseMapper<Users> {
}
在 SpringBoot启动类中添加 @MapperScan
注解,扫描Mapper文件夹
xxxxxxxxxx
@SpringBootApplication
@MapperScan("com.itbaizhan.myspringsecurity.mapper")
public class MysecurityApplication {
public static void main(String[] args) {
SpringApplication.run(MysecurityApplication.class, args);
}
}
创建UserDetailsService
的实现类,编写自定义认证逻辑
xxxxxxxxxx
@Service
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private UsersMapper usersMapper;
// 自定义认证逻辑
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 1.构造查询条件
QueryWrapper<Users> wrapper = new QueryWrapper<Users>().eq("username", username);
// 2.查询用户
Users users = usersMapper.selectOne(wrapper);
// 3.封装为UserDetails对象
UserDetails userDetails = User
.withUsername(users.getUsername())
.password(users.getPassword())
.authorities("admin")
.build();
// 4.返回封装好的UserDetails对象
return userDetails;
}
}
测试连接数据库认证
实时效果反馈
1. 在SpringSecurity中,自定义认证逻辑时,需要把查到的用户封装为对象
A Users
B Details
C UserDetails
D Admin
答案
1=>C