背景:

随着微服务的盛行,做开发时不可避免的要涉及第三方接口,安全起见,这些接口都会需要一个token参数。而token一般都会有一个过期时间,比如2小时或者30分钟。那么如何在自己的应用中存储并管理这些token呢?

常见方案:

内存缓存;第三方缓存

我们一般都会给每个第三方设置一个过期时间参数,使用的时候判断当前token是否过期,如果过期则重新获取。

个人建议的方案:

如果第三方不多(一般也不会很多,撑死了1000个第三方接口?),直接就把每次获取的token放到一个HashMap中,根据第三方名称获取对应的token直接请求对应的接口,如果返回错误码,而且错误码标志当前token过期,则重新获取token,并更新HashMap(注意加锁),重新请求。这种方案不再需要判断token是否过期,存储token的时候不再需要记录token获取时间,也不需要过期参数。设置过期参数的缺点就是,如果第三方过期时间有修改,本身的应用也需要重新配置参数、生效。从设计上来说,过期时间是由第三方接口管理的,我们自己的应用就不要再判断了。

当然我的方案也是有前提的:第三方要返回token是否过期的错误码。如果不返回token是否过期的错误码,或者从错误消息无法判断token是否过期,我相信无论哪种方案都是不可行的。毕竟如果token过期了,调用的时候却判断不出来,这样的接口想想都不可思议。还是不要调用的好。

如何管理第三方接口token过期时间的更多相关文章

  1. token过期时间

    token有两个有效期,在config/jwt.php下面 # ./config/jwt.php'ttl' => env('JWT_TTL', 600), ##600min=10h 'refre ...

  2. 【django后端分离】Django Rest Framework之认证系统之redis数据库的token认证(token过期时间)

    1:登录视图 redis_cli.py文件: import redis Pool= redis.ConnectionPool(host='localhost',port=6379,decode_res ...

  3. Laravel Passport token过期后判断refresh_token是否过期

    需求:前后端分离状态下,登录失效(token过期)后,前端需要知道下一步是跳转到登录页面还是使用refresh_token刷新token. 这就需要后端根据是否可以刷新token(refresh_to ...

  4. 29.Jwt集成(3):token设置过期时间、异常判断

    token设置过期时间 package main import ( "fmt" "github.com/dgrijalva/jwt-go" "io/i ...

  5. Retrofit Token过期 重新请求Token再去请求接口

    需求是这样的:请求接口A -- 服务器返回数据Token过期或失效  -- 重新请求Token并设置 -- 再去请求接口A 刚解决了这个问题,趁热打铁,写个博客记录一下:这个Token是添加到请求头里 ...

  6. [译]使用chage来管理Linux密码过期时间的七个例子

    本文译自 7 Examples to Manage Linux Password Expiration and Aging Using chage 本文主要介绍命令chage的使用,译文会对原文内容会 ...

  7. 满足java对redis的所有操作,token,验证码过期时间等

    很实用 链接在此  https://www.cnblogs.com/edisonfeng/p/3571870.html System.out.println("=============== ...

  8. spring-redis-session 自定义 key 和过期时间

    对于分布式应用来说,最开始遇到的问题就是 session 的存储了,解决方案大致有如下几种 使用 spring-session 它可以把 session 存储到你想存储的位置,如 redis,mysq ...

  9. 关于web会话中的session过期时间的设置

    关于web会话中的session过期时间的设置 1.操作系统: 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...

随机推荐

  1. hdu 3237

    dp 状态压缩 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> ...

  2. [Bzoj2733][Hnoi2012] 永无乡(BST)(Pb_ds tree)

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4108  Solved: 2195[Submit][Statu ...

  3. java 并发基础,及案例分析

    对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了,然而并发问题是令我们大多数程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们深入研 ...

  4. QT程序--CS1.6文件整理及安装器

    这是一个在高二的时候写的一个QT程序,当时对于QT也不算是特别熟悉吧,算是我第一个QT程序,当时由于CS1.6的文件安装的繁琐,又有一些服务器的管理的麻烦操作,对CS的服务器管理一直都很麻烦,当时高二 ...

  5. Nexus3.0.1如何上传第三方插件

    原文:http://blog.csdn.net/wang465745776/article/details/52527905 前提条件 Nexus 3.0.1 提出问题 如何上传第三方插件到Nexus ...

  6. CEF3研究(四)之javascript集成

    一.介绍 谷歌浏览器和CEF使用V8JavaScript Engine作为内容的JavaScript实现.在浏览器中的每个窗口都有它自己在的JS上下文提供作用域和在窗口中安全的执行JS代码.CEF暴露 ...

  7. 【Scrapy】Selectors

    Constructing selectors For convenience,response objects exposes a selector on .selector attribute,it ...

  8. Jenkins系列之-—05 节点配置

    一.节点配置 1. 进入[系统管理]-[节点管理]-[新建节点],录入节点名,选择Permanent Agent,下一步录入节点详细配置信息,如下: Name:节点名称 Description:节点描 ...

  9. LightOJ - 1317 Throwing Balls into the Baskets 期望

    题目大意:有N个人,M个篮框.K个回合,每一个回合每一个人能够投一颗球,每一个人的命中率都是同样的P.问K回合后,投中的球的期望数是多少 解题思路:由于每一个人的投篮都是一个独立的事件.互不影响.所以 ...

  10. eclipse中导入其它的webproject遇到和解决的问题

    注:下面为我从网上搜来的方法.经使用及学习后整理. 学习javaweb有段时间了.对于导入新项目.遇到好多问题.但终于成功了. 错误1:string cannot be resolved to a t ...