Merge remote-tracking branch 'origin/beetlsql3-dev' into beetlsql3-dev

beetlsql3-dev
yangdj 2 years ago
commit 7b8ea9edb7

@ -26,7 +26,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import static com.ibeetl.admin.core.util.servlet.ServletUtils.getRequest;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUserId;
/**
* 访访
@ -426,7 +425,7 @@ public class CorePlatformService {
public Object logout() {
httpRequestLocal.removeAllSessionValue();
httpRequestLocal.removeAllAttributeValue();
tokenSessionMap.remove(getUserId());
// tokenSessionMap.remove(getUserId());
return getRequest().getContextPath();
}
}

@ -1,5 +1,6 @@
package cn.jlw.Interceptor;
import cn.hutool.extra.spring.SpringUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSONArray;
import com.auth0.jwt.JWT;
@ -8,6 +9,11 @@ import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.jlw.entity.AbstractToken;
import com.ibeetl.jlw.service.WebPlatformService;
import org.apache.commons.lang3.StringUtils;
@ -26,8 +32,10 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import static cn.jlw.token.TokenService.tokenMap;
import static com.ibeetl.admin.core.util.servlet.ServletUtils.getRequest;
/**
* @author TLT
@ -40,7 +48,18 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
@Autowired
ActionLog actionLog;
public static Map<String,String> indexTokenMap = new ConcurrentHashMap<>();
// public static Map<String,String> indexTokenMap = new ConcurrentHashMap<>();
// public static DefaultRedisMap<String,String> indexTokenMap = new DefaultRedisMap<>("core:token:indexTokenMap", SpringUtil.getBean("stringRedisTemplate"));
public static LoadingCache<String, String> indexTokenMap = CacheBuilder.newBuilder()
.expireAfterAccess(8, TimeUnit.HOURS)
.build(new CacheLoader<String, String>() {
// 处理缓存键不存在缓存值时的处理逻辑
@Override
public String load(String key) {
return "不存在的key";
}
});
public static Map<String,String> keyIdOpenIdMap = new ConcurrentHashMap<>();
public static Map<String,Object[]> workMap = new ConcurrentHashMap<>(); //用来存储后台工作的人员正在进行的操作
@ -58,25 +77,26 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
public static boolean run(ActionLog actionLog,HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception{
if(null != httpServletRequest
&& null != httpServletRequest.getRequestURI()
&& httpServletRequest.getRequestURI().endsWith("pzwj.exe")){
if(null != httpServletRequest) {
String requestURI = httpServletRequest.getRequestURI();
if (null != requestURI && requestURI.endsWith("pzwj.exe")) {
String fileName = "配置工具.exe";
String fileName = "配置工具.exe";
if(null != httpServletRequest && null != httpServletRequest.getHeader("User-Agent")){
if (httpServletRequest.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1"); // firefox浏览器
}else if (httpServletRequest.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {
fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1");// 谷歌
}else {
if (null != httpServletRequest && null != httpServletRequest.getHeader("User-Agent")) {
if (httpServletRequest.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1"); // firefox浏览器
} else if (httpServletRequest.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {
fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1");// 谷歌
} else {
fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器 或其他浏览器
}
} else {
fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器 或其他浏览器
}
}else {
fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器 或其他浏览器
}
httpServletResponse.setHeader("Content-Disposition", "attachment; filename="+fileName);
httpServletResponse.setHeader("Content-Disposition", "attachment; filename=" + fileName);
}
}
// 如果不是映射到方法直接通过
@ -175,23 +195,65 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
}
if(StringUtils.isBlank(token)&&httpServletRequest.getRequestURL().toString().contains("index.do")){//从参数中获取
if(null != httpServletRequest.getParameter("key_id")){
token = indexTokenMap.get(httpServletRequest.getParameter("key_id"));
String key_id = httpServletRequest.getParameter("key_id");
if(null != key_id){
token = indexTokenMap.getUnchecked(key_id);
}
}
String loginTime = "";
String[] jwtStrings = jwtTokenSplitDateTime(token);
String loginTime = jwtStrings[1];
token = jwtStrings[0];
httpServletRequest.setAttribute("token",token);
httpServletRequest.setAttribute("loginTime",loginTime);
return token;
}
/**
* : <br>
* jwtToken
*
* @param token
* @return {@link String[]}
* @Author: lx
* @Date: 2022/12/3 22:58
*/
public static String[] jwtTokenSplitDateTime(String token) {
String[] str = new String[2];
//断token的尾巴
if(StringUtils.isNotBlank(token)){
if(token.split("\\.").length > 3){
loginTime = token.split("\\.")[3];
String[] split = token.split("\\.");
if(split.length > 3){
String loginTime = split[3];
token = token.replace("."+loginTime,"");
str[0] = token;
str[1] = loginTime;
}
}
return str;
}
httpServletRequest.setAttribute("token",token);
httpServletRequest.setAttribute("loginTime",loginTime);
/**
* : <br>
* KeyIdrequest.session
* keyId
*
* @Author: lx
* @Date: 2022/12/3 22:37
*/
public static String fullSessionInfoWithKeyId() {
return token;
WebPlatformService webPlatformService = SpringUtil.getBean(WebPlatformService.class);
CoreUserService coreUserService = SpringUtil.getBean(CoreUserService.class);
String jwtToken = getToken(getRequest());
String coreUserId = JWT.decode(jwtToken).getAudience().get(0);
UserLoginInfo userLoginInfo = webPlatformService
.buildLoginInfo(coreUserService.getUserById(Long.valueOf(coreUserId)));
webPlatformService.setLoginUser(userLoginInfo);
return jwtToken;
}
}

@ -261,7 +261,7 @@ public class Student extends BaseEntity implements AbstractToken {
@Override
public String getId() {
return this.getStudentId().toString();
return this.getUserId().toString();
}
@Override

@ -247,7 +247,7 @@ public class Teacher extends BaseEntity implements AbstractToken {
@Override
public String getId() {
return getTeacherId().toString();
return getUserId().toString();
}
@Override

@ -1,12 +1,8 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.util.ObjectUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.service.CoreBaseService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.PlatformException;
@ -154,30 +150,4 @@ public class CoreUserWxService extends CoreBaseService<CoreUserWx>{
return null;
}
}
/**
*
* @return
*/
public UserLoginInfo buildLoginInfoWithWx(CoreUserWx coreUserWx){
// 构建的返回对象
UserLoginInfo loginInfo = new UserLoginInfo();
if (ObjectUtil.isNotEmpty(coreUserWx)) {
// 微信登录信息,绑定的系统级用户
CoreUser bindCoreUser = coreUserWx.getCoreUser();
if (bindCoreUser == null) {
return null;
}
// 查询这个对象所在的机构列表
List<CoreOrg> orgs = coreUserService.getUserOrg(bindCoreUser.getId(), bindCoreUser.getOrgId());
loginInfo.setUser(bindCoreUser);
loginInfo.setOrgs(orgs);
loginInfo.setCurrentOrg(orgs.get(0));
return loginInfo;
}
return null;
}
}

@ -20,6 +20,7 @@ import java.util.concurrent.ConcurrentHashMap;
import static cn.jlw.Interceptor.AuthenticationInterceptor.indexTokenMap;
/**
* @author Binary Wang
*/
@ -73,7 +74,7 @@ public class MsgHandler extends AbstractHandler {
.build();
}
UserLoginInfo userLoginInfo = coreUserWxService.buildLoginInfoWithWx(coreUserWx);
UserLoginInfo userLoginInfo = webPlatformService.buildLoginInfo(coreUserWx.getCoreUser());
if (userLoginInfo == null) {
map.put("type", "login");
map.put("status", "error");

@ -1,12 +1,14 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.jlw.token.TokenService;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.enums.MenuEnums;
import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import com.ibeetl.jlw.entity.Student;
import com.ibeetl.jlw.entity.Teacher;
@ -34,6 +36,8 @@ public class WebPlatformService {
@Autowired private CorePlatformService corePlatformService;
@Autowired private TokenService tokenService;
@Autowired private CoreUserService coreUserService;
/**
* Session
* @param user
@ -118,4 +122,24 @@ public class WebPlatformService {
}
return token;
}
/**
*
* @return
*/
public UserLoginInfo buildLoginInfo(CoreUser bindCoreUser){
// 构建的返回对象
UserLoginInfo loginInfo = new UserLoginInfo();
if (ObjectUtil.isNotEmpty(bindCoreUser)) {
// 查询这个对象所在的机构列表
List<CoreOrg> orgs = coreUserService.getUserOrg(bindCoreUser.getId(), bindCoreUser.getOrgId());
loginInfo.setUser(bindCoreUser);
loginInfo.setOrgs(orgs);
loginInfo.setCurrentOrg(orgs.get(0));
return loginInfo;
}
return null;
}
}

@ -51,7 +51,7 @@ import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.*;
import static cn.jlw.Interceptor.AuthenticationInterceptor.getToken;
import static cn.jlw.Interceptor.AuthenticationInterceptor.fullSessionInfoWithKeyId;
import static cn.jlw.Interceptor.AuthenticationInterceptor.indexTokenMap;
import static cn.jlw.token.TokenService.updateByIds;
import static com.ibeetl.admin.core.enums.MenuEnums.JT_S_02;
@ -950,23 +950,14 @@ public class IndexController {
//跳转到电脑端首页
@RequestMapping("/index.do")
public void index(HttpServletRequest request, HttpServletResponse response,
@TTeacher Teacher teacher, @TStudent Student student, @SCoreUser CoreUser coreUser) {
@TTeacher Teacher teacher, @TStudent Student student) {
log.error("登录用户信息:"+ JSONUtil.toJsonStr(coreUser));
log.error("教师用户信息:"+ JSONUtil.toJsonStr(teacher));
log.error("学生用户信息:"+ JSONUtil.toJsonStr(student));
String redirectUrl = "";
//判断是老师还是学生
if(null != student || null != teacher){//学生
try {
if(request.getHeader("Referer").contains("/server")){
redirectUrl = request.getHeader("Referer").substring(0,request.getHeader("Referer").indexOf("/server"));
}else {
redirectUrl = request.getHeader("Referer").substring(0,request.getHeader("Referer").lastIndexOf("/") + 1);
}
String token = getToken(request);
String token = fullSessionInfoWithKeyId();
// UniversitiesCollegesJurisdictionExperimentalSystem uSystem = (UniversitiesCollegesJurisdictionExperimentalSystem)platformService.getOther(token);

Loading…
Cancel
Save