添加单点登录相关
This commit is contained in:
@@ -3,12 +3,17 @@ package com.ruoyi.framework.web.service;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.ruoyi.cms.service.impl.AppUserServiceImpl;
|
import com.ruoyi.cms.service.impl.AppUserServiceImpl;
|
||||||
import com.ruoyi.cms.util.StringUtil;
|
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.AppUser;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
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.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.core.redis.RedisCache;
|
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.encrypt.EncryptUtil;
|
||||||
import com.ruoyi.common.utils.ip.IpUtils;
|
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.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||||
@@ -40,7 +45,7 @@ public class SsoService {
|
|||||||
AppUserServiceImpl appUserService;
|
AppUserServiceImpl appUserService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
TokenService tokenService;
|
private TokenSiteService tokenSiteService;
|
||||||
|
|
||||||
@Value("${lc_web_auth.appId}")
|
@Value("${lc_web_auth.appId}")
|
||||||
String webAppId;
|
String webAppId;
|
||||||
@@ -94,24 +99,32 @@ public class SsoService {
|
|||||||
AppUser appUser = appUserService.selectAppuserByIdcard(personCardNo);
|
AppUser appUser = appUserService.selectAppuserByIdcard(personCardNo);
|
||||||
if (appUser == null) {
|
if (appUser == null) {
|
||||||
//用户不存在,则先保存用户
|
//用户不存在,则先保存用户
|
||||||
saveAppUser(userJson);
|
appUser = saveAppUser(userJson);
|
||||||
}
|
}
|
||||||
//用户存在,生成本系统用户的token
|
//用户存在,生成本系统用户的token
|
||||||
LoginUser loginUser = new LoginUser();
|
String token = loginApp(appUser, info.getString("userName"));
|
||||||
SysUser user = new SysUser();
|
|
||||||
user.setUserName(info.getString("userName"));
|
|
||||||
loginUser.setUser(user);
|
|
||||||
String token = tokenService.createToken(loginUser);
|
|
||||||
//缓存token
|
//缓存token
|
||||||
String userKey = APP_USER_TOKEN_KEY + userJson.getString("userId");
|
// String userKey = APP_USER_TOKEN_KEY + userJson.getString("userId");
|
||||||
redisCache.setCacheObject(userKey, token, 2, TimeUnit.HOURS);
|
// redisCache.setCacheObject(userKey, token, 2, TimeUnit.HOURS);
|
||||||
JSONObject backJson = new JSONObject();
|
JSONObject backJson = new JSONObject();
|
||||||
backJson.put("token", token);
|
backJson.put("token", token);
|
||||||
backJson.put("lcToken", lcToken);
|
backJson.put("lcToken", lcToken);
|
||||||
return backJson;
|
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) {
|
private String getToken(String url, String token, String params) {
|
||||||
try {
|
try {
|
||||||
String result = sendHttpPost(url, token, params);
|
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");
|
JSONObject info = userJson.getJSONObject("info");
|
||||||
AppUser appUser = new AppUser();
|
AppUser appUser = new AppUser();
|
||||||
//app角色:0企业,1求职者,2网格员 3内部政府人员 4其他(浪潮用)
|
//app角色:0企业,1求职者,2网格员 3内部政府人员 4其他(浪潮用)
|
||||||
@@ -192,6 +204,8 @@ public class SsoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
appUserService.insertAppUser(appUser);
|
appUserService.insertAppUser(appUser);
|
||||||
|
|
||||||
|
return appUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
//发送请求
|
//发送请求
|
||||||
|
|||||||
Reference in New Issue
Block a user