package com.genersoft.iot.vmp.conf.security; import com.genersoft.iot.vmp.conf.security.dto.LoginUser; import com.genersoft.iot.vmp.service.IUserService; import com.genersoft.iot.vmp.storager.dao.dto.User; import com.github.xiaoymin.knife4j.core.util.StrUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.Component; import java.time.LocalDateTime; /** * 用户登录认证逻辑 */ @Component public class DefaultUserDetailsServiceImpl implements UserDetailsService { private final static Logger logger = LoggerFactory.getLogger(DefaultUserDetailsServiceImpl.class); @Autowired private IUserService userService; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { if (StrUtil.isBlank(username)) { logger.info("登录用户:{} 不存在", username); throw new UsernameNotFoundException("登录用户:" + username + " 不存在"); } // 查出密码 User user = userService.getUserByUsername(username); if (user == null) { logger.info("登录用户:{} 不存在", username); throw new UsernameNotFoundException("登录用户:" + username + " 不存在"); } String password = SecurityUtils.encryptPassword(user.getPassword()); user.setPassword(password); return new LoginUser(user, LocalDateTime.now()); } }