添加单点登录相关
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
//发送请求
|
||||
|
||||
Reference in New Issue
Block a user