如何管理第三方接口token过期时间
背景:
随着微服务的盛行,做开发时不可避免的要涉及第三方接口,安全起见,这些接口都会需要一个token参数。而token一般都会有一个过期时间,比如2小时或者30分钟。那么如何在自己的应用中存储并管理这些token呢?
常见方案:
内存缓存;第三方缓存
我们一般都会给每个第三方设置一个过期时间参数,使用的时候判断当前token是否过期,如果过期则重新获取。
个人建议的方案:
如果第三方不多(一般也不会很多,撑死了1000个第三方接口?),直接就把每次获取的token放到一个HashMap中,根据第三方名称获取对应的token直接请求对应的接口,如果返回错误码,而且错误码标志当前token过期,则重新获取token,并更新HashMap(注意加锁),重新请求。这种方案不再需要判断token是否过期,存储token的时候不再需要记录token获取时间,也不需要过期参数。设置过期参数的缺点就是,如果第三方过期时间有修改,本身的应用也需要重新配置参数、生效。从设计上来说,过期时间是由第三方接口管理的,我们自己的应用就不要再判断了。
当然我的方案也是有前提的:第三方要返回token是否过期的错误码。如果不返回token是否过期的错误码,或者从错误消息无法判断token是否过期,我相信无论哪种方案都是不可行的。毕竟如果token过期了,调用的时候却判断不出来,这样的接口想想都不可思议。还是不要调用的好。
如何管理第三方接口token过期时间的更多相关文章
- token过期时间
token有两个有效期,在config/jwt.php下面 # ./config/jwt.php'ttl' => env('JWT_TTL', 600), ##600min=10h 'refre ...
- 【django后端分离】Django Rest Framework之认证系统之redis数据库的token认证(token过期时间)
1:登录视图 redis_cli.py文件: import redis Pool= redis.ConnectionPool(host='localhost',port=6379,decode_res ...
- Laravel Passport token过期后判断refresh_token是否过期
需求:前后端分离状态下,登录失效(token过期)后,前端需要知道下一步是跳转到登录页面还是使用refresh_token刷新token. 这就需要后端根据是否可以刷新token(refresh_to ...
- 29.Jwt集成(3):token设置过期时间、异常判断
token设置过期时间 package main import ( "fmt" "github.com/dgrijalva/jwt-go" "io/i ...
- Retrofit Token过期 重新请求Token再去请求接口
需求是这样的:请求接口A -- 服务器返回数据Token过期或失效 -- 重新请求Token并设置 -- 再去请求接口A 刚解决了这个问题,趁热打铁,写个博客记录一下:这个Token是添加到请求头里 ...
- [译]使用chage来管理Linux密码过期时间的七个例子
本文译自 7 Examples to Manage Linux Password Expiration and Aging Using chage 本文主要介绍命令chage的使用,译文会对原文内容会 ...
- 满足java对redis的所有操作,token,验证码过期时间等
很实用 链接在此 https://www.cnblogs.com/edisonfeng/p/3571870.html System.out.println("=============== ...
- spring-redis-session 自定义 key 和过期时间
对于分布式应用来说,最开始遇到的问题就是 session 的存储了,解决方案大致有如下几种 使用 spring-session 它可以把 session 存储到你想存储的位置,如 redis,mysq ...
- 关于web会话中的session过期时间的设置
关于web会话中的session过期时间的设置 1.操作系统: 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...
随机推荐
- 从零开始写STL—set/map
这一部分只要把搜索树中暴露的接口封装一下,做一些改动. set源码剖析 template<typename T> class set { public: typedef T key_typ ...
- Topcoder 658 650 point
Topcoder 658 div2 500 加强版 不过给了<=20,暴力肯定不行. 然后想DP方程,先二分可能需要的最大次数mid; 然后根据 mid 构造 DP方程. 假设x[i]需要 x个 ...
- IDEA添加作者注释
1.打开IDEA的settings,然后在Editor下找到File and Code Templates 2.然后选择File Header 选择需要注释的的格式即可.
- Java重写equals方法和hashCode方法
package com.ddy; public class User { private Integer id; private String name; private St ...
- 系统优化(一)Maven打包同一个jar有不同的:版本号+时间戳(解决思路)
解决:maven仓库的ear里面有非常多个同样的jar(仅仅是包括不同的:版本号+时间戳) 问题描写叙述: 发现ear里面有非常多个同样的jar,仅仅是包括不同的:版本号+时间戳,例如以下图所看到的: ...
- coco2d-js demo程序之滚动的小球
近期有一个游戏叫围住神经猫,报道说是使用html5技术来做的. html5的跨平台的优良特性非常不错.对于人手不足,技术不足,选用html5技术实现跨平台的梦想真是不错. 近期在看coco2d-js这 ...
- java递归删除文件及目录
package base; import java.io.File; public class delete { public static void main(String[] args) ...
- java克隆对象clone()的使用方法和作用
转自:997.html">http://www.okrs.cn/blog/news/?997.html 内容摘要 若需改动一个对象,同一时候不想改变调用者的对象.就要制作该对象的一个本 ...
- 西门子PLC学习笔记六-(Step7指令简单介绍)
1.指令操作数 指令操作数由操作标示符和參数组成. 操作标识符由主标识符和辅标识符组成. 主标识符有:I(输入过程影像寄存器).Q(输出过程映像寄存器).M(位寄存器).PI(外部输入寄存器).PQ( ...
- WEKA简单介绍与资源汇总
简单介绍 Weka是一个开源的数据挖掘软件,里面集成了很多经典的机器学习算法,在高校和科研机构中受到了广泛的应用. 具体的简单介绍和简单的使用请參考文档:<使用Weka进行数据挖掘>. 学 ...