添加单点登录相关

This commit is contained in:
chenyanchang
2026-05-20 17:06:29 +08:00
parent 131f1461ce
commit 2d69232e5a

View File

@@ -3,12 +3,17 @@ package com.ruoyi.framework.web.service;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.cms.service.impl.AppUserServiceImpl;
import com.ruoyi.cms.util.StringUtil;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.encrypt.EncryptUtil;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -40,7 +45,7 @@ public class SsoService {
AppUserServiceImpl appUserService;
@Autowired
TokenService tokenService;
private TokenSiteService tokenSiteService;
@Value("${lc_web_auth.appId}")
String webAppId;
@@ -94,24 +99,32 @@ public class SsoService {
AppUser appUser = appUserService.selectAppuserByIdcard(personCardNo);
if (appUser == null) {
//用户不存在,则先保存用户
saveAppUser(userJson);
appUser = saveAppUser(userJson);
}
//用户存在生成本系统用户的token
LoginUser loginUser = new LoginUser();
SysUser user = new SysUser();
user.setUserName(info.getString("userName"));
loginUser.setUser(user);
String token = tokenService.createToken(loginUser);
String token = loginApp(appUser, info.getString("userName"));
//缓存token
String userKey = APP_USER_TOKEN_KEY + userJson.getString("userId");
redisCache.setCacheObject(userKey, token, 2, TimeUnit.HOURS);
// String userKey = APP_USER_TOKEN_KEY + userJson.getString("userId");
// redisCache.setCacheObject(userKey, token, 2, TimeUnit.HOURS);
JSONObject backJson = new JSONObject();
backJson.put("token", token);
backJson.put("lcToken", lcToken);
return backJson;
}
//1.获取token
//模拟登录
public String loginApp(AppUser appUser, String userName){
LoginSiteUser loginSiteUser = new LoginSiteUser();
loginSiteUser.setUserId(appUser.getUserId());
loginSiteUser.setUser(appUser);
// recordLoginInfo(appUser);
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
// recordLoginInfo(appUser);
// 生成token
return tokenSiteService.createToken(loginSiteUser);
}
//获取token
private String getToken(String url, String token, String params) {
try {
String result = sendHttpPost(url, token, params);
@@ -151,9 +164,8 @@ public class SsoService {
}
}
//保存用户
private void saveAppUser(JSONObject userJson) {
private AppUser saveAppUser(JSONObject userJson) {
JSONObject info = userJson.getJSONObject("info");
AppUser appUser = new AppUser();
//app角色0企业1求职者2网格员 3内部政府人员 4其他浪潮用
@@ -192,6 +204,8 @@ public class SsoService {
}
appUserService.insertAppUser(appUser);
return appUser;
}
//发送请求