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

2015做那些网站致富电商网站商品页的优化目标是什么

2015做那些网站致富,电商网站商品页的优化目标是什么,企业网站开发费是固定资产吗,wordpress图标字体不显示不出来SpringBoot 微服务中怎么获取用户信息 token 当我们写了一个A接口,这个接口需要调用B接口,但是B接口需要包含请求头内容,比如需要用户信息、用户id等内容,由于不在同一个线程中,使用ThreadLocal去获取数据是无法获取的…

SpringBoot 微服务中怎么获取用户信息 token

当我们写了一个A接口,这个接口需要调用B接口,但是B接口需要包含请求头内容,比如需要用户信息、用户id等内容,由于不在同一个线程中,使用ThreadLocal去获取数据是无法获取的,这个时候需要手动将信息放置请求头中。

前置知识

获取请求头方式

return BaseContext.getUserId();是我随便写的不要在意!!!

第一种 ServletRequestAttributes

通过ServletRequestAttributes获取请求。

@GetMapping("/token")
public Long getToken() {ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();String token = request.getHeader("token");return BaseContext.getUserId();
}

第二种 HttpServletRequest

@GetMapping("/token")
public Long getToken(HttpServletRequest request) {String token = request.getHeader("token");return BaseContext.getUserId();
}

第二种 通过注解

@GetMapping("/token")
public Long getToken(@RequestHeader("token") String token) {return BaseContext.getUserId();
}

操作步骤

准备好两个接口还有一个OpenFeign。

OpenFeign

@FeignClient(value = "service-admin",contextId = "IndexFeignClient", path = "")
public interface IndexFeignClient {@GetMapping("/token")Long getToken();
}

被调用接口B

@GetMapping("/token")
public Long getToken() {ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();String token = request.getHeader("token");return BaseContext.getUserId();
}

调用接口A

@GetMapping("abc")
public String index() {Long id = indexFeignClient.getToken();return "欢迎访问。。。";
}

这个时候正常去调用这个接口是无法获取到token相关信息的。

可以看到是null,因为没有将请求头传递过来。

在这里插入图片描述

传递请求头

我使用的是JWT方式,这种可以存储一些信息。使用的是注解方式存入请求头。

重写以实现对Feign请求的拦截和处理,首先通过RequestContextHolder.getRequestAttributes()方法获取ServletRequestAttributes对象,这个对象封装了当前请求的相关信息。然后将ServletRequestAttributes对象转换为ServletRequestAttributes类型,并确保它不为空。

使用requestTemplate.header("token", token)方法将获取到的token值作为请求的header添加到Feign请求模板中。这样,在发起Feign请求时,会自动将token作为请求头一并发送给目标服务。

创建UserTokenFeignInterceptor

import feign.RequestInterceptor;
import feign.RequestTemplate;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;public class UserTokenFeignInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate requestTemplate) {ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();assert requestAttributes != null;HttpServletRequest request = requestAttributes.getRequest();String token = request.getHeader("token");requestTemplate.header("token", token);}
}

使用注解

使用@Import将之前的UserTokenFeignInterceptor引入。

import cn.bunny.common.utils.feign.UserTokenFeignInterceptor;
import org.springframework.context.annotation.Import;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.TYPE)
@Import(value = UserTokenFeignInterceptor.class)
public @interface EnableUserTokenFeignInterceptor {}

最后在接口启动类上加上这个注解,也就是在接口A的启动类上这个注解。不要加错了!!!

是接口A的启动类!!!

是接口A的启动类!!!

是接口A的启动类!!!

@EnableFeignClients(basePackages = {"cn.bunny.feign.admin"})
@SpringBootApplication
@Slf4j
@EnableUserTokenFeignInterceptor
public class ServiceWebApplication {public static void main(String[] args) {log.info("ServiceApplication启动...");SpringApplication.run(ServiceWebApplication.class, args);}
}

之后就可以看到传递成功的token

在这里插入图片描述

http://www.zhongyajixie.com/news/26476.html

相关文章:

  • 选择合肥网站建设个人网站推广平台大全
  • 安卓盒子做网站视频号排名优化帝搜软件
  • 下载的网站模板怎么使用石家庄疫情最新情况
  • 凤岗金属制品东莞网站建设技术支持网站用户体验优化
  • 6月8日政府网站建设规范指定关键词seo报价
  • 怎么讲解网站产品推广方案模板
  • 昆山网站建设电话中山网站建设公司
  • 横岗做网站企业查询app
  • 哪个网站可以接广告做大兵seo博客
  • 广州购物商城网站国家认可的赚钱软件
  • 产品设计协作平台湖州seo排名
  • 网站做app有什么意义网站优化方案
  • 盘锦网站建设 盘锦建站推广 盘锦建站营销推广内容
  • 虚拟主机只能静态网站合肥做网站哪家好
  • 品牌商标购买网站企业推广文案范文
  • 新手网站怎么做站长联盟网上赚钱网络app推广是什么工作
  • 尼罗发表小说做的的网站是哪个宁波seo网页怎么优化
  • 建设h网站风险大吗百度最新秒收录方法2022
  • 做的网站为什么手机上搜不到企业新网站seo推广
  • 网站建设套餐价格做百度推广一个月多少钱
  • 做网站要求什么营销方案怎么写?
  • 电商网站业务流程图免费的郑州网络推广服务
  • 怎样做的网站内网外网都能用免费网站推广网站破解版
  • 网站开发数据如何转化web成品网站源码免费
  • 开发投资集团百度快照优化排名怎么做
  • 住建网查询资质一键查询潍坊网站建设优化
  • 农村电商网站建设方案爱站网注册人查询
  • 网站后期维护工作包括哪些百度指数搜索热度排行
  • 做代理能赚到钱吗泰州seo网络公司
  • 自适应网站建设优化建站steam交易链接在哪看