准备数据库数据
CREATE TABLE `user` (
`id` INT(11) NOT NULL auto_increment,
`username` VARCHAR(255),
`password` VARCHAR(255),
`phone` VARCHAR(255),
PRIMARY KEY (`id`)
);
编写用户实体类
/**
* @Author yqq
* @Date 2022/05/17 13:42
* @Version 1.0
*/
public class Users {
private Integer id;
private String username;
private String password;
private String phone;
}
编写dao接口
/**
* @Author yqq
* @Date 2022/05/17 13:46
* @Version 1.0
*/
public interface UserMapper extends BaseMapper<Users> {
}
添加 @MapperScan 注解
/**
* @Author yqq
* @Date 2022/05/17 12:25
* @Version 1.0
*/
("com.neu.mapper")
public class ApplicationMain {
public static void main(String[] args) {
SpringApplication.run(ApplicationMain.class,args);
log.info("服务启动成功");
}
}
创建 UserDetailsService 的实现类,编写自定义认证逻辑
/**
* @Author yqq
* @Date 2022/05/17 13:50
* @Version 1.0
*/
public class MyUserDetailService implements UserDetailsService {
private UserMapper userMapper;
//自定义认证逻辑
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//1 构造查询条件
QueryWrapper<Users> wrapper = new QueryWrapper<Users>().eq("username", username);
//2 查询用户
Users users = userMapper.selectOne(wrapper);
if (users == null)
return null;
//3 封装为UserDetails对象
UserDetails userDetails = User.withUsername(users.getUsername())
.password(users.getPassword())
.authorities("admin")
.build();
//返回封装好的userDetails对象
return userDetails;
}
}
测试连接数据库认证