package com.example.jz.auth;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.example.jz.dao.UserDao;
|
import com.example.jz.modle.entity.SecurityUser;
|
import com.example.jz.modle.entity.User;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* @author 安瑾然
|
* @data 2022/7/18 - 10:34 AM
|
* @description 用户详情服务
|
*/
|
@Service("userDetailsService")
|
public class UserDetailService implements UserDetailsService {
|
// 注入Usermapper
|
@Autowired
|
private UserDao userDao;
|
|
|
@Override
|
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
// 通过username查询数据库获取用户信息
|
User user = userDao.selectOne(new LambdaQueryWrapper<>(User.class).eq(User::getLoginUsername, username));
|
if(user.getStatus()==0){
|
throw new UsernameNotFoundException("当前账户被禁用,请联系管理员!");
|
}
|
// 判断用户是否存在
|
if (user == null) {
|
throw new UsernameNotFoundException("账户信息不存在!");
|
}
|
// 存在对应的用户信息,则将其封装,丢给security自己去解析
|
|
// 登录时,会走这个接口
|
// 权限暂时不查数据库
|
List<String> roles = Arrays.asList("ROLE_admin,admin");
|
|
// 将数据封装给 SecurityUser ,因为 SecurityUser 是 UserDetails 的子类
|
SecurityUser securityUser = new SecurityUser();
|
securityUser.setPermissionValueList(roles);
|
securityUser.setUsername(user.getLoginUsername());
|
securityUser.setPassword(user.getLoginPassword());
|
|
return securityUser;
|
}
|
}
|