package cc.mrbird.febs.common.interceptor;
|
|
|
import cc.mrbird.febs.common.utils.AppContants;
|
import cc.mrbird.febs.common.utils.RedisUtils;
|
import cc.mrbird.febs.common.utils.SpringContextUtil;
|
import cc.mrbird.febs.video.entity.VideoMemberEntity;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.crypto.asymmetric.KeyType;
|
import cn.hutool.crypto.asymmetric.RSA;
|
import com.alibaba.fastjson.JSON;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.web.servlet.HandlerInterceptor;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
@Slf4j
|
public class VideoInterceptor implements HandlerInterceptor {
|
|
private final RedisUtils redisUtils = SpringContextUtil.getBean(RedisUtils.class);
|
@Override
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
String headerToken = request.getHeader("token");
|
if (StrUtil.isNotBlank(headerToken)) {
|
RSA rsa = new RSA(AppContants.PRIVATE_KEY, null);
|
String[] tokens = StrUtil.split(rsa.decryptStr(headerToken, KeyType.PrivateKey), "_");
|
|
String token = tokens[0];
|
String userJsonStr = redisUtils.getString(token);
|
|
if (StrUtil.isNotBlank(userJsonStr)) {
|
VideoMemberEntity member = JSON.parseObject(userJsonStr, VideoMemberEntity.class);
|
request.getSession().setAttribute("member", member);
|
}
|
}
|
|
return true;
|
}
|
|
@Override
|
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
|
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
|
}
|
|
@Override
|
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
|
}
|
}
|