gpt4 book ai didi

解决微服务中关于用户token处理到的坑

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章解决微服务中关于用户token处理到的坑由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

关于用户token处理到的坑

当采用前后台完全分离,以微服务架构的搭建时。在搭建微服务过程中,由于每个服务都是独立的应用,这样就会造成一个统一用户的问题.

当用户从这个用户管理系统中登录后,在其他系统的如何判断用户是否已经登录的问题.

目前常用的有以下几种方案:

  • 1、session 、redis共享处理
  • 2、Header存储token机制
  • 3、用户每个接口加入token参数

其中3方案最简单,但是要求每个调用接口都需要传入token参数。我的前期采用的是这种方案。整体测试及使用结果还不错.

方案2 是要求在进行请求时将token参数加入header中,由于涉及了自定义header参数,因此如果进行跨域访问时,会过不了Html预检功能。如果要处理这种预检,需要先进行options请求的处理。因此我在前台进行options请求,先将options请求返回200这样才能保证请求的继续执行。如果采用同一个域名的情况下,可以避免这种情况.

方案3 在要求我们加入一个spring-session-data-redis的依赖。然后启动redishttpsession功能。但是我在使用过程中遇到不少问题。但是当多个项目启动这个功能时,会出现session冲突问题,造成每次请求的sessionid发生变化.

微服务服务间调用传递token

微服务间的调用通常我们使用FeignClient来实现。那么如何在调用的时候传递token来保证服务间调用的安全校验呢?

没错,我们可以配置一个拦截器。该拦截器的功能就是在请求发出去前在header中添加token.

代码如下

?
1
2
3
4
5
6
7
@Component
public class FeignHeaderInterceptor implements RequestInterceptor {
     @Override
     public void apply(RequestTemplate template) {
         template.header(HttpHeaders.AUTHORIZATION, "token" );
     }
}

RequestInterceptor是feign提供的接口

该接口只有一个方法:

?
1
2
3
public interface RequestInterceptor {
   void apply(RequestTemplate template);
}

这样被调用的服务就可以在header中拿到token来做校验了.

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/tianlong1569/article/details/90699996 。

最后此篇关于解决微服务中关于用户token处理到的坑的文章就讲到这里了,如果你想了解更多关于解决微服务中关于用户token处理到的坑的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com