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

网站内建设的发展德山经济开发区建设局网站

网站内建设的发展,德山经济开发区建设局网站,微信群公告如何做网站链接,火车头采集wordpress1.流程图 单机节点下的登录状态校验 分布式节点下的登录状态校验 2.代码实现 实现步骤分为如下几步 实现WebMvcConfigurer接口#xff0c;添加拦截器定义拦截器#xff0c;需要配置两个interceptor#xff0c;第一个用于刷新token#xff0c;写threadlocal#xff…1.流程图 单机节点下的登录状态校验 分布式节点下的登录状态校验 2.代码实现 实现步骤分为如下几步 实现WebMvcConfigurer接口添加拦截器定义拦截器需要配置两个interceptor第一个用于刷新token写threadlocal第二个用于判断threadlocal中是否有用户的登录信息 q1为什么这里要定义两个interceptor把刷新token的逻辑放到LoginInterceptor里边实现 a1原因是LoginInterceptor配置了页面路径排除LoginInterceptor只对需要登录的页面做校验对于不需要登录的是直接放行不会执行preHandle方法如果刷新token放在LoginInterceptor则会出现用户在不需要登录的页面操作过了一段时间仍会提醒用户没有登录的现象 a.实现WebMvcConfigurer接口配置拦截器 package com.hmdp.config;import com.hmdp.utils.LoginInterceptor; import com.hmdp.utils.RefreshTokenInterceptor; 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;Configuration public class MvcConfig implements WebMvcConfigurer {Resourceprivate StringRedisTemplate stringRedisTemplate;Overridepublic void addInterceptors(InterceptorRegistry registry) {// 登录拦截器registry.addInterceptor(new LoginInterceptor()).excludePathPatterns(/shop/**,/voucher/**,/shop-type/**,/upload/**,/blog/hot,/user/code,/user/login).order(1);// token刷新的拦截器registry.addInterceptor(new RefreshTokenInterceptor(stringRedisTemplate)).addPathPatterns(/**).order(0);} }b.定义拦截器interceptor 需要配置两个interceptor第一个用于刷新token写threadlocal第二个用于判断threadlocal中是否有用户的登录信息 第一个用于从redis中取出用户的登录信息并将登录信息维护到threadlocal中 package com.hmdp.utils;import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.hmdp.dto.UserDTO; import org.springframework.data.redis.core.StringRedisTemplate; 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.utils.RedisConstants.LOGIN_USER_KEY; import static com.hmdp.utils.RedisConstants.LOGIN_USER_TTL;public class RefreshTokenInterceptor implements HandlerInterceptor {private StringRedisTemplate 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 (StrUtil.isBlank(token)) {return true;}// 2.基于TOKEN获取redis中的用户String key LOGIN_USER_KEY token;MapObject, Object userMap stringRedisTemplate.opsForHash().entries(key);// 3.判断用户是否存在if (userMap.isEmpty()) {return true;}// 5.将查询到的hash数据转为UserDTOUserDTO userDTO BeanUtil.fillBeanWithMap(userMap, new UserDTO(), false);// 6.存在保存用户信息到 ThreadLocalUserHolder.saveUser(userDTO);// 7.刷新token有效期stringRedisTemplate.expire(key, LOGIN_USER_TTL, TimeUnit.MINUTES);// 8.放行return true;}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 移除用户UserHolder.removeUser();} } 第二个从threadlocal中读用户信息判断用户是否登录 import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1.判断是否需要拦截ThreadLocal中是否有用户if (UserHolder.getUser() null) {// 没有需要拦截设置状态码response.setStatus(401);// 拦截return false;}// 有用户则放行return true;} }
http://www.hkea.cn/news/14291799/

相关文章:

  • 陕西省网上注册公司流程性价比高seo网站优化
  • 鲜花电商网站开发电子商务公司名称起名
  • 古典水墨网站兰州启点网站建设
  • 重庆秀山网站建设费用wordpress 主题制作 教程
  • 保定商城网站建设如何优化关键词排名快速首页
  • 上市公司集团网站建设网站及其建设的心得
  • 响应式外贸营销网站注册一个公司多少钱
  • 中国南昌企业网站制作贵阳网站建设seo公众号开发
  • 网站基础知识域名5个点做网站运营还是翻译
  • 中山网站建设公司哪个好动易网站开发的主要技术
  • 空间信息网站麻花星空影视传媒制作公司
  • 在哪个网站做民营企业申报十大国际贸易公司排名
  • 网站建设4038gzs网站空间不支持php
  • 网站后台页面模板下载网络推广阶段策划
  • 一级门户网站建设费用网络整合营销方案ppt
  • 做学校网站会下线吗seo优化网站查询
  • 怎么自己建立一个网站宁波环保营销型网站建设
  • 网站集约建设后网站域名规范东莞建网站哪家好
  • 移动网站建设多少钱网站扫码登录怎么做
  • 旅游资源网站建设的功能及内容微信网站制作
  • 太原网站seo顾问二级造价工程师
  • 长春火车站是北站吗建建设网站公司
  • 手表排名哪个网站好做照明出口的网站
  • 手机壁纸网站大全律师的网站模板
  • 常用网站开发语言WordPress分段插件
  • 餐饮网站模板wordpress全站广告位
  • 首次进入网站时给一个alert怎么做成都机房托管
  • 360安全网站怎么做号码认证杭州网站推广服务
  • 生物科技网站建设方案百度mip wordpress
  • 用什么网站做问卷量品定制