修改换token时获取权限问题

This commit is contained in:
chenshaohua
2026-06-16 19:26:28 +08:00
parent e95836561a
commit 95e29dc805

View File

@@ -10,6 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginSiteUser; import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.encrypt.EncryptUtil; import com.ruoyi.common.utils.encrypt.EncryptUtil;
import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.common.utils.ip.IpUtils;
@@ -29,6 +30,10 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@@ -62,6 +67,9 @@ public class SsoService {
@Autowired @Autowired
private SysUserRoleMapper sysUserRoleMapper; private SysUserRoleMapper sysUserRoleMapper;
@Autowired
private UserDetailsService userDetailsService;
//一体机pc个人企业 //一体机pc个人企业
@Value("${lc_web_auth.appId}") @Value("${lc_web_auth.appId}")
String webAppId; String webAppId;
@@ -372,14 +380,27 @@ public class SsoService {
//模拟登录sysuser //模拟登录sysuser
public String loginSysUser(SysUser sysUser, String userName){ public String loginSysUser(SysUser sysUser, String userName){
LoginUser loginUser = new LoginUser(); Authentication authentication = authenticateLocalUser(userName);
loginUser.setUserId(sysUser.getUserId()); LoginUser loginUser = (LoginUser) authentication.getPrincipal();
loginUser.setUser(sysUser);
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
// 生成token // 生成token
return tokenService.createTokenHourTwo(loginUser); return tokenService.createTokenHourTwo(loginUser);
} }
/**
* 获取用户权限
* @param localUsername
* @return
*/
private Authentication authenticateLocalUser(String localUsername) {
try {
UserDetails userDetails = userDetailsService.loadUserByUsername(localUsername);
return new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
} catch (Exception e) {
throw new ServiceException("本地用户认证失败:" + e.getMessage());
}
}
//获取用户信息 //获取用户信息
private JSONObject getUserInfo(String url, String token, String params) { private JSONObject getUserInfo(String url, String token, String params) {
try { try {