视频进行工号验证

This commit is contained in:
zhaolongfei
2024-11-08 17:12:01 +08:00
parent 87adf2aca5
commit af0c26294d

View File

@@ -7,16 +7,13 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.map.MapUtil; import cn.hutool.json.JSONUtil;
import cn.hutool.system.UserInfo;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xboe.config.JwtUtils;
import com.xboe.constants.CacheName; import com.xboe.constants.CacheName;
import com.xboe.data.outside.IOutSideDataService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -39,15 +36,18 @@ import com.xboe.module.course.service.ICourseFileService;
public class CourseWareApi extends ApiBaseController { public class CourseWareApi extends ApiBaseController {
private String cookieName = "PLAYSIGN_TIME"; private String cookieName = "PLAYSIGN_TIME";
@Autowired
IOutSideDataService outsideDataService;
@Resource @Resource
private ICourseFileService courseFileService; private ICourseFileService courseFileService;
@Resource @Resource
private XFileUploader fileUploader; private XFileUploader fileUploader;
@Autowired
StringRedisTemplate redisTemplate; @Resource
RedisTemplate<String, Object> redisTemplate;
private static Set<String> allowUrlSet = new HashSet<String>(); private static Set<String> allowUrlSet = new HashSet<String>();
static { static {
@@ -103,12 +103,10 @@ public class CourseWareApi extends ApiBaseController {
if (StringUtils.isBlank(sign)) { if (StringUtils.isBlank(sign)) {
return badRequest("非法请求"); return badRequest("非法请求");
// return;
} }
String httpReferer = request.getHeader("referer"); String httpReferer = request.getHeader("referer");
if (StringUtils.isBlank(httpReferer)) { if (StringUtils.isBlank(httpReferer)) {
return badRequest("非法请求"); return badRequest("非法请求");
// return "非法请求";
} }
boolean has=false; boolean has=false;
@@ -120,7 +118,6 @@ public class CourseWareApi extends ApiBaseController {
if(!has) { if(!has) {
return badRequest("页面不存在"); return badRequest("页面不存在");
//return "非法请求";
} }
String token = request.getHeader("Xboe-Access-Token"); String token = request.getHeader("Xboe-Access-Token");
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
@@ -130,21 +127,19 @@ public class CourseWareApi extends ApiBaseController {
String cookieTime = getSignTimeCookie(request); String cookieTime = getSignTimeCookie(request);
if (StringUtils.isBlank(cookieTime)) { if (StringUtils.isBlank(cookieTime)) {
return badRequest("不支持的请求"); return badRequest("不支持的请求");
// return;
} }
String userInfo = CacheName.NAME_INFO + ":"+ token; String userInfo = CacheName.NAME_INFO + ":"+ token;
String userNoStr = redisTemplate.opsForValue().get(userInfo); Object o = redisTemplate.opsForValue().get(userInfo);
if (StringUtils.isBlank(userNoStr)){ String userNoStr = o.toString();
if (StringUtils.isBlank(userNoStr)) {
return badRequest("token验证错误"); return badRequest("token验证错误");
} }
Map<String, Object> map = JwtUtils.parseToken(token); HashMap bean = JSONUtil.toBean(userNoStr, HashMap.class);
String userNo = MapUtil.getStr(map, "userNo"); Object userNo = bean.get("userNo");
byte[] signBytes = Base64.getDecoder().decode(sign); byte[] signBytes = Base64.getDecoder().decode(sign);
// byte[] signBytes = RSAUtil.decryptBase64(sign); // byte[] signBytes = RSAUtil.decryptBase64(sign);
byte[] signDecryt = RSAUtil.decryptByPrivateKey(ConfigSecretKey.TEMP_PRIVATESTR, signBytes); byte[] signDecryt = RSAUtil.decryptByPrivateKey(ConfigSecretKey.TEMP_PRIVATESTR, signBytes);
String signStr = new String(signDecryt); String signStr = new String(signDecryt);
// System.out.println("解密后的字符串:"+signStr);
// 第一个/前端是时间 // 第一个/前端是时间
int index = signStr.indexOf("/"); int index = signStr.indexOf("/");
if (index <= 0) { if (index <= 0) {