如何管理第三方接口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)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...
随机推荐
- POJ 1502 水 dij
题意:给N,表示N个节点. 给半个邻接矩阵,本身到本身的距离是0,边是双向的.当两个节点之间没有直接的边连接的时候,用x表示. 问从第一个节点到其他所有节点至少花费的时间. 这题唯一的处理是处理邻接矩 ...
- Eclipse运行Maven命令时出现:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.问题解决
错误: -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment varia ...
- [转] SQL SERVER 2008 R2 安装中的账户设置问题
故纸堆 原文:SQL SERVER 2008安装中设置账户的问题,2013-7 在安装SQL Server 2008数据库服务器的时候,服务器有可能处于以下几种环境中: ①工作组环境下的服务器 (Wo ...
- grails的criteria和hql查询
grails在查询方面也保留了hibernate的hql和criteria查询功能.hql自然不必多说基本不会有什么变化,grails的criteria查询在hibernate上面做了微调使用起来更加 ...
- Java知识图谱
1.Java学习路径1 我想很多人看到这个路径可能会问我在哪里可以学习,所以就先附上这条路径的学习地址吧,这也是这张图片的来源,愿意学习的可以去看看:Java研发工程师学习路径 2.Java学习路径2 ...
- setenv LD_LIBRARY_PATH
For most Linux binaries, NCL was built using gcc and gfortran. This may cause a dependency on a file ...
- Vs2017添加引用时报错 未能正确加载“ReferenceManagerPackage”包。
Vs2017添加引用时报错未能正确加载“ReferenceManagerPackage”包. 最近新装了2017,开始前几天还好, 可是最近在添加引用时,报错 -------------------- ...
- AWK教程
1. IBM:GAWK入门:AWK语言基础 2. Unix AWK使用手册 3. 台湾中研院计算中心ASPAC计划之AWK程序介绍 4. Study-area之AWK 5. AWK学习笔记——酷勤 持 ...
- IO流(SequenceInputStream序列流--文件拆分与合并)
一.文件拆分 1.将一个文件按照规定的大小进行分割成多个文件并将被分割详细信息保存至配置信息中 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载,属性列表 ...
- Mac Chrome-点击书签页在新的标签打开之方法
PS:一直使用的是Firefox,但是现在Firefox有些不能满足我现在的需求,所以下载了chrome.可是当使用chrome时发现有一个很实用的功能它不能设置,这个让我很抓狂. 当点击标签时不能新 ...