package com.gk.firework.Config.Oauth2; import com.gk.firework.Domain.UserInfo; import com.gk.firework.Domain.Utils.CommonUtil; import com.gk.firework.Domain.Utils.Constants; import com.gk.firework.Service.UserService; import io.swagger.models.auth.In; 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.List; import java.util.Optional; /** * 加载用户特定数据的核心接口(Core interface which loads user-specific data.) * * @author zhangby * @date 2019-05-14 09:49 */ @Service public class UserServiceDetail implements UserDetailsService { @Autowired UserService userService; /** * 根据用户名查询用户 */ @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { String authType = System.getProperty(Constants.AUTH_TYPE); OauthUser oauthUser = new OauthUser(); //查询登录用户 UserInfo userInfo = userService.selectByLoginname(username); Optional.of(userInfo).ifPresent(us ->{ //查询角色 List roleByUser = userService.selectRoleByUser(us.getId().intValue()); //数据类型转换 List oauthRoles = CommonUtil .convers(roleByUser, role -> new OauthRole( role.getId(), role.getAuthority(),null,null) ); //数据结果集封装 oauthUser.setId(us.getId().toString()); oauthUser.setPassword(us.getPassword()); oauthUser.setUsername(us.getUsername()); oauthUser.setOauthRoles(oauthRoles); }); //判断登录入口 return oauthUser; } }