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

重庆百度网站快速排名网站不推广如何排名

重庆百度网站快速排名,网站不推广如何排名,资源管理器,建设网站预期效果怎么写前置声明 当前前后端分离开发项目中#xff0c;后端某个请求向具体某个数据库中的多个表插入数据时#xff0c;经常需要使用到当前登录用户的Id#xff08;唯一标识#xff09;。在当前用户线程下以实现变量共享#xff0c;同时为了避免不同用户线程之间操作变量的影响后端某个请求向具体某个数据库中的多个表插入数据时经常需要使用到当前登录用户的Id唯一标识。在当前用户线程下以实现变量共享同时为了避免不同用户线程之间操作变量的影响往往选择ThreadLocal本地线程变量实现线程内变量的共享读取同时避免不同线程间操作的影响。 产生第一个问题我们如何获取用户的线程Id并将其存入到本地线程变量ThreadLocal中 http连接是无状态的当前请求不会共享上一次请求的数据所以需要结果Cookie、Session或Token一起使用同时Token结合JWT令牌尝尝用于用户的登录校验只有通过验证的连接才可以执行后续请求没有通过登录验证的连接直接拒绝本次请求提醒用户进行登录授权。在用户首次登陆时服务端会利用JWT令牌技术生成Token并将其一起返回给用户随后用户访问服务端时携带第一次生成的Token服务端可以实现用户登陆校验。在生成Token的同时可以在payLoad中加入用户Id信息实现每次连接服务端解析Token获取当前登陆用户Id的目的。 单体服务苍穹外卖如何获取用户Id 实现原理 苍穹外卖作为一个单体项目整个项目内只有一个启动类所有可以认为一个连接就是一个线程项目结构如下 在单体项目中获取用户Id并将其存入ThreadLocal变量中可以在项目拦截器中的以实现具体流程如下 在生成JWT Token的过程中返给UserId在拦截请求验证过程中解析Token获取用户Id。 实现步骤 创建ThreadLocal类主要功能包括设置UerId获取UserId清除UserId。 public class BaseContext {public static ThreadLocalLong threadLocal new ThreadLocal();/*** 设置UserId值* param id*/public static void setCurrentId(Long id) {threadLocal.set(id);}/*** 获取UserId值* return*/public static Long getCurrentId() {return threadLocal.get();}/*** 请求局部变量ThreadLocal中的UserId防止内存溢出*/public static void removeCurrentId() {threadLocal.remove();} } 在拦截器中解析Token获取用户Id并将其存入上面创建的BaseContext类中。  /*** 校验jwt** param request* param response* param handler* return* throws Exception*/public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//判断当前拦截到的是Controller的方法还是其他资源if (!(handler instanceof HandlerMethod)) {//当前拦截到的不是动态方法直接放行return true;}//1、从请求头中获取令牌String token request.getHeader(jwtProperties.getUserTokenName());//2、校验令牌try {log.info(jwt校验:{}, token);Claims claims JwtUtil.parseJWT(jwtProperties.getUserSecretKey(), token);Long userId Long.valueOf(claims.get(JwtClaimsConstant.USER_ID).toString());log.info(当前员工id{}, userId);// 将当前登陆ID放入ThreadLocal中BaseContext.setCurrentId(userId);//3、通过放行return true;} catch (Exception ex) {//4、不通过响应401状态码response.setStatus(401);return false;}} 上述代码块中主要使用的如下直接调用静态方法setCurrentId将UserId添加到创建的ThreadLocal中。 此后直接从BaseContext中使用getCurrentId(...)获取当前登陆用户的Id。  微服务黑马头条如何获取用户Id 实现原理 相信做过黑马头条这个项目的同伴都不会陌生微服务这个概念在黑马头条这个微服务项目中涉及到多个微服务如网关微服务、文章微服务、用户微服务......。各个微服务均有属于各自的启动类各个微服务通过阿里开源nacos实现服务注册与分发在这个项目中自媒体网关微服务和自媒体微服务通过nacos将其关联起来自媒体相关请求到达时首先通过Nginx方向代理将其分配到自媒体网关微服务接口对其进行登陆校验Token解析相关工作通过验证的请求nacos会将其分发到自媒体微服务接口实现后续操作。 两个微服务各自有各自的启动类二者之间并不直接联系对应不同的线程。如何使用TheradLocal实现共享变量的线程内部使用。 首先在自媒体网关微服务中对Token进行解析并将其存入Header中随后路由重置请求将其发送到自媒体微服务中后续逻辑同单体服务。 实现步骤 构建ThreadLocal类。 public class WmThreadLocalUtil {private static ThreadLocalWmUser WM_USER_THREAD_LOCAL new ThreadLocal();/*** 设置用户信息* param wmUser*/public static void setUser(WmUser wmUser){WM_USER_THREAD_LOCAL.set(wmUser);}/*** 获取用户信息* return*/public static WmUser getUser(){return WM_USER_THREAD_LOCAL.get();}/*** 清理用户信息*/public static void clear(){WM_USER_THREAD_LOCAL.remove();} } 自媒体网关微服务中对登陆进行校验并获取用户信息。  在自媒体微服务中配置拦截器对header进行拦截并进行存储。 Slf4j Component public class WmTokenInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String userId request.getHeader(userId);if(userId ! null){log.info(将用户信息存入到ThreadLocal中{}, userId);WmUser wmUser new WmUser();wmUser.setId(Integer.valueOf(userId));WmThreadLocalUtil.setUser(wmUser);}return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);log.info(清理ThreadLocal中的用户信息);WmThreadLocalUtil.clear();}} 在上面代码中重写postHandle(...)方法对ThreadLocal中的变量进行及时清除。防止内存溢出。 参考 苍穹外卖 黑马头条
http://www.pierceye.com/news/827457/

相关文章:

  • 网站的内容规划怎么写网站做外链的具体步骤
  • 百度网站排名规则小程序网站建设y021
  • 中国建设银行国际互联网站国内排名前五的电商
  • 怎么查网站的空间商四川建设工程招标网
  • 网站建设比较好公司朝阳区互联网公司排名
  • 百度不收录网站吗网站开发php
  • 房产网站建设的功能wordpress php7拓展
  • 做网站代码用什么软件天津建设工程信息网天津
  • 网站开发工程师前景怎么样怎么做自己的网站?
  • 井陉矿区网站建设做微商的网站
  • 办公室装修专业网站小程序免费制作平台有吗
  • 学生做兼职去哪个网站线上推广的渠道有哪些
  • 徐州网站的优化苏州百度推广开户
  • 网站有多少个网站建设与管理介绍
  • 网站建站报告2000字查询公司的网站
  • 兰州网站制作服务电话博客建站模板
  • 网站后台登陆路径网站网站优化
  • wordpress仿站方法网站图片做伪静态
  • 怎么做一款贷款网站蚌埠seo公司
  • 做羊水亲子鉴定网站企业vi设计公司定制
  • 网站开发和微信开发需要什么人一个服务器放多少网站
  • 做6个页面的网站郑州seo优化顾问热狗
  • 网站建设 落地页中国石化工程建设有限公司怎么样
  • 网站建设 软文发布wordpress调取列表页
  • php网站服务器架设清远哪里有网页设计培训学费
  • 建站开发搜索引擎排名查询
  • 如何建设自己的网站 知乎怎么做电力设计公司网站
  • 效果图代做网站网站服务体系
  • 成都网站开发团队减肥养生网站建设
  • 个人做网站需要资质吗用php做网站的书籍