java后台拦截器_「小程序JAVA实战」小程序的springboot后台拦截器

「小程序JAVA实战」小程序的springboot后台拦截器

发布时间:2020-07-07 16:58:24

来源:51CTO

阅读:102

作者:IT人故事

之前咱们把用户登录,注册成功的信息都放到redis里面了,如果产品经理有一种场景,就是同一个用户在同一个时间以最后一个登录为准,那么前一个就需要重新登录,并且清空前一个用户缓存。这就用到了springboot的缓存机制。源码:https://github.com/limingios/wxProgram.git 中No.15和springboot

拦截器的创建通过前端传递过来的userToken,和从redis里面获取到的userToken对比,如果不一致,前端传递过来的这个session奖杯提示用户被挤出,直接缓存失效。需要重新登录。package com.idig8.controller.interceptor;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import com.idig8.utils.JSONResult;import com.idig8.utils.JsonUtils;import com.idig8.utils.RedisOperator;public class MiniInterceptor implements HandlerInterceptor {    @Autowired

public RedisOperator redis;    public static final String USER_REDIS_SESSION = "user-redis-session";

/**

* 拦截请求,在controller调用之前

*/

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,

Object arg2) throws Exception {

String userId = request.getHeader("headerUserId");

String userToken = request.getHeader("headerUserToken");

if (StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(userToken)) {

String uniqueToken = redis.get(USER_REDIS_SESSION + ":" + userId);            if (StringUtils.isEmpty(uniqueToken) && StringUtils.isBlank(uniqueToken)) {

System.out.println("请登录...");

returnErrorResponse(response, new JSONResult().errorTokenMsg("请登录..."));                return false;

} else {                if (!uniqueToken.equals(userToken)) {

System.out.println("账号被挤出...");

returnErrorResponse(response, new JSONResult().errorTokenMsg("账号被挤出..."));      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值