当前位置: 首页 > news >正文

深圳网站建设最专业营销策略从哪几个方面分析

深圳网站建设最专业,营销策略从哪几个方面分析,做网站和做软件哪个赚钱,magento跨境b2b网站建设在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能。 登录拦截器优化: 先来看看现在拦截器情况: 拦截…

在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能。

登录拦截器优化:

先来看看现在拦截器情况:

拦截流程:

当拦截器拦截需要拦截到的url时候,才会在拦截器中更新用户token的过期时间。那如果,访问了不被拦截的路径,就不会给token续命的。这样就会导致用户token过期,而重新登录的。这样是不对的。

拦截了哪些路径?在config/MvcConfig中

当访问以上这些路径的是,就不会自动更新用户的token过期时间了。

优化:我们可以在现有拦截器签名价格拦截器:

将获取用户,存放threadLocal及刷新token放到新的拦截器中。

第一个拦截器就叫做:刷新token拦截器;第二个拦截器就叫做:用户拦截器

创建刷新token的拦截器:

import cn.hutool.core.bean.BeanUtil;
import com.hmdp.dto.UserDTO;
import com.hmdp.utils.UserHolder;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.concurrent.TimeUnit;import static com.hmdp.constants.RedisConstants.LOGIN_USER_TOKEN_KEY;
import static com.hmdp.constants.RedisConstants.LOGIN_USER_TOKEN_TTL;/*** @author 凯哥Java* @description 刷新用户token的烂机器* @company*/
public class RefreshTokenInterceptor implements HandlerInterceptor {private StringRedisTemplate stringRedisTemplate;/*** 因为这个类不能被spring管理,所以不能直接注入RedisTemplate对象。通过构造函数传递** @param stringRedisTemplate*/public RefreshTokenInterceptor(StringRedisTemplate stringRedisTemplate) {this.stringRedisTemplate = stringRedisTemplate;}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//1:从请求中获取到tokenString token = request.getHeader("authorization");if (StringUtils.isEmpty(token)) {return true;}//2:基于token获取redis中用户对象String key = LOGIN_USER_TOKEN_KEY + token;Map<Object, Object> userMap = stringRedisTemplate.opsForHash().entries(key);//3:判断if (userMap.isEmpty()) {return true;}//将map转对象UserDTO user = BeanUtil.fillBeanWithMap(userMap, new UserDTO(), false);UserHolder.saveUser(user);//刷新token的过期时间stringRedisTemplate.expire(key, LOGIN_USER_TOKEN_TTL, TimeUnit.MINUTES);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {UserHolder.removeUser();}
}

修改用户拦截器:

import com.hmdp.utils.UserHolder;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @author 凯哥Java* @description 登录拦击器* @company*/
public class UserInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//判断是否需要拦截if (UserHolder.getUser() == null) {response.setStatus(401);return false;}return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {UserHolder.removeUser();}
}

修改MvcCofig。将两个拦截器添加进去,并设置拦截顺序:

import com.hmdp.interceptor.RefreshTokenInterceptor;
import com.hmdp.interceptor.UserInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import javax.annotation.Resource;/*** @author 凯哥Java* @description  mvn的配置-添加拦截器* @company*/
@Configuration
public class MvcConfig implements WebMvcConfigurer {@Resourceprivate StringRedisTemplate stringRedisTemplate;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//登录拦截器registry.addInterceptor(new UserInterceptor()).excludePathPatterns("/shop/**","/voucher/**","/shop-type/**","/upload/**","/blog/hot","/user/code","/user/login").order(1);//刷新token拦截器registry.addInterceptor(new RefreshTokenInterceptor(stringRedisTemplate)).addPathPatterns("/**").order(0);}
}

http://www.dt0577.cn/news/2956.html

相关文章:

  • 郑州网站制作-中国互联北京网站优化步骤
  • 宝塔怎么做第二个网站什么是sem和seo
  • 兰州学校网站建设对网络营销的理解
  • 彩票网站开发制作模版信息流广告优化师培训
  • 网站帮企业做推广价格怎么算想在百度做推广怎么做
  • 男朋友说是做竞彩网站维护的2022双11各大电商平台销售数据
  • 网站建设合同范文画质优化app下载
  • 绵阳市网站建设seo顾问服务公司
  • 网站开发应该怎么做香港百度广告
  • 有哪些做网站公司网站搜什么关键词好
  • 兼职做网站的软件宽带业务如何推广
  • 网页运行环境开发方案镇江seo公司
  • WDCP运行WordPress咸阳seo公司
  • 广州外贸网站建设服务网站推广方案
  • 可以做企业宣传的网站成都百度seo推广
  • 专业做h5网站昆明seo优化
  • 益阳营销网站建设相关搜索优化软件
  • shopify独立站怎么做企业文化的重要性
  • 基金网站模板百度竞价多少钱一个点击
  • 专做兼职的网站企业营销策划实训报告
  • 怎样创建网站和网页福建seo外包
  • 网站不接入备案做百度网站一年多少钱
  • 齐齐哈尔哪里做网站企业文化的重要性和意义
  • 怎么制作网站logo潍坊网站建设优化
  • 网站的标签网页制作步骤
  • 购物网站制作怎么做搜索引擎营销优化策略有哪些
  • 网站推广的案例国外搜索引擎排名百鸣
  • 制作网页和网站的区别百度竞价推广费用
  • 如何靠裁图找到网站seo优化的网站
  • 水果网站大全app下载谷歌浏览器手机版免费官方下载