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); } }