UserDetailsServiceImpl.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package com.ydtech.security;
  2. import com.ydtech.modules.admin.model.SysUser;
  3. import com.ydtech.modules.admin.service.SysUserService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.security.core.GrantedAuthority;
  6. import org.springframework.security.core.userdetails.UserDetails;
  7. import org.springframework.security.core.userdetails.UserDetailsService;
  8. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  9. import org.springframework.stereotype.Service;
  10. import java.util.List;
  11. import java.util.Set;
  12. import java.util.stream.Collectors;
  13. /**
  14. * 用户登录认证信息查询
  15. *
  16. * @author Louis
  17. * @date Jun 29, 2019
  18. */
  19. @Service
  20. public class UserDetailsServiceImpl implements UserDetailsService {
  21. @Autowired
  22. private SysUserService userService;
  23. @Override
  24. public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
  25. SysUser user = userService.findByUsername(username);
  26. if (user == null) {
  27. throw new UsernameNotFoundException("该用户不存在");
  28. }
  29. // 用户权限列表,根据用户拥有的权限标识与如 @PreAuthorize("hasAuthority('sys:menu:view')") 标注的接口对比,决定是否可以调用接口
  30. Set<String> permissions = userService.findPermissions(user);
  31. List<GrantedAuthority> grantedAuthorities = permissions.stream().map(GrantedAuthorityImpl::new).collect(Collectors.toList());
  32. return new JwtUserDetails(user.getName(), user.getPassword(), user.getSalt(), user.getDeptId(), user.getId(), grantedAuthorities);
  33. // return new JwtUserDetails(user.getName(), user.getPassword(), user.getSalt(), user.getDeptId(), grantedAuthorities);
  34. }
  35. }