解决微服务中关于用户token处理到的坑
目录
- 关于用户token处理到的坑
- 目前常用的有以下几种方案:
- 微服务服务间调用传递token
- 代码如下
- RequestInterceptor是feign提供的接口
关于用户token处理到的坑 当采用前后台完全分离,以微服务架构的搭建时。在搭建微服务过程中,由于每个服务都是独立的应用,这样就会造成一个统一用户的问题。
当用户从这个用户管理系统中登录后,在其他系统的如何判断用户是否已经登录的问题。
目前常用的有以下几种方案:
- 1、session 、redis共享处理
- 2、Header存储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。
代码如下
@Componentpublic class FeignHeaderInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate template) {template.header(HttpHeaders.AUTHORIZATION, "token"); }}
RequestInterceptor是feign提供的接口
该接口只有一个方法:
public interface RequestInterceptor {void apply(RequestTemplate template); }
这样被调用的服务就可以在header中拿到token来做校验了。
【解决微服务中关于用户token处理到的坑】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- CET4听力微技能一
- 微习惯复盘
- 社保代缴公司服务费包含哪些
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 员工的微信朋友圈是公司的宣传阵地吗()