package com.ydtech.security; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.service.SysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.GrantedAuthority; 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.List; import java.util.Set; import java.util.stream.Collectors; /** * 用户登录认证信息查询 * * @author Louis * @date Jun 29, 2019 */ @Service public class UserDetailsServiceImpl implements UserDetailsService { @Autowired private SysUserService userService; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { SysUser user = userService.findByUsername(username); if (user == null) { throw new UsernameNotFoundException("该用户不存在"); } // 用户权限列表,根据用户拥有的权限标识与如 @PreAuthorize("hasAuthority('sys:menu:view')") 标注的接口对比,决定是否可以调用接口 Set permissions = userService.findPermissions(user); List grantedAuthorities = permissions.stream().map(GrantedAuthorityImpl::new).collect(Collectors.toList()); return new JwtUserDetails(user.getName(), user.getPassword(), user.getSalt(), user.getDeptId(), user.getId(), grantedAuthorities); // return new JwtUserDetails(user.getName(), user.getPassword(), user.getSalt(), user.getDeptId(), grantedAuthorities); } }