当前位置:首页 > 火币交易平台 > token 过期后,如何自动续期?

token 过期后,如何自动续期?

财掌柜中国4年前 (2022-07-22)火币交易平台250

JWT token的 payload 部分是一个json串,是要传递数据的一组声明,这些声明被JWT标准称为claimsimtoken。

JWT标准里面定义的标准claim包括:

iss(Issuser):JWT的签发主体;

sub(Subject):JWT的所有者;

aud(Audience):JWT的接收对象;

exp(Expiration time):JWT的过期时间;

nbf(Not Before):JWT的生效开始时间;

iat(Issued at):JWT的签发时间;

jti(JWT ID):是JWT的唯一标识imtoken。

iss(Issuser):JWT的签发主体;

sub(Subject):JWT的所有者;

aud(Audience):JWT的接收对象;

exp(Expiration time):JWT的过期时间;

nbf(Not Before):JWT的生效开始时间;

iat(Issued at):JWT的签发时间;

jti(JWT ID):是JWT的唯一标识imtoken。

除了以上标准声明以外,我们还可以自定义声明imtoken。以 com.auth0 为例,下面代码片段实现了生成一个带有过期时间的token.

其中:

withIssuer 设置签发主体;

withIssuedAt 设置签发时间;

withExpiresAt 设置过期时间戳imtoken,过期的时长为 EXPIRES_IN (单位秒);

withClaim 设置自定义参数imtoken。

withIssuer 设置签发主体;

withIssuedAt 设置签发时间;

展开全文

withExpiresAt 设置过期时间戳imtoken,过期的时长为 EXPIRES_IN (单位秒);

withClaim 设置自定义参数imtoken。

JWT设置了过期时间以后,一定超过,那么接口就不能访问了,需要用户重新登录获取tokenimtoken。如果经常需要用户重新登录,显然这种体验不是太好,因此很多应用会采用token过期后自动续期的方案,只有特定条件下才会让用户重新登录。

token过期的续期方案

解决token过期的续期问题可以有很多种不同的方案,这里举一些比较有代表性的例子imtoken。首先我们看一个单token方案,这个方案除了可以实现token续期以外,还可以实现某些条件下的强制重新登录。

单token方案

将 token 过期时间设置为15分钟;

前端发起请求imtoken,后端验证 token 是否过期;如果过期,前端发起刷新token请求,后端为前端返回一个新的token;

前端用新的token发起请求imtoken,请求成功;

如果要实现每隔72小时,必须重新登录,后端需要记录每次用户的登录时间;用户每次请求时,检查用户最后一次登录日期,如超过72小时,则拒绝刷新token的请求,请求失败,跳转到登录页面imtoken。

将 token 过期时间设置为15分钟;

前端发起请求imtoken,后端验证 token 是否过期;如果过期,前端发起刷新token请求,后端为前端返回一个新的token;

前端用新的token发起请求imtoken,请求成功;

如果要实现每隔72小时,必须重新登录,后端需要记录每次用户的登录时间;用户每次请求时,检查用户最后一次登录日期,如超过72小时,则拒绝刷新token的请求,请求失败,跳转到登录页面imtoken。

另外后端还可以记录刷新token的次数,比如最多刷新50次,如果达到50次,则不再允许刷新,需要用户重新授权imtoken。

上面介绍的单token方案原理比较简单imtoken。下面我们再看一个双token方案。

双token方案

登录成功以后imtoken,后端返回 access_token 和 refresh_token,客户端缓存此两种token;

使用 access_token 请求接口资源imtoken,成功则调用成功;如果token超时,客户端携带 refresh_token 调用token刷新接口获取新的 access_token;

后端接受刷新token的请求后,检查 refresh_token 是否过期imtoken。如果过期,拒绝刷新,客户端收到该状态后,跳转到登录页;如果未过期,生成新的 access_token 返回给客户端。

客户端携带新的 access_token 重新调用上面的资源接口imtoken。

客户端退出登录或修改密码后,注销旧的token,使 access_token 和 refresh_token 失效,同时清空客户端的 access_token 和 refresh_tokeimtoken。

登录成功以后imtoken,后端返回 access_token 和 refresh_token,客户端缓存此两种token;

使用 access_token 请求接口资源imtoken,成功则调用成功;如果token超时,客户端携带 refresh_token 调用token刷新接口获取新的 access_token;

后端接受刷新token的请求后,检查 refresh_token 是否过期imtoken。如果过期,拒绝刷新,客户端收到该状态后,跳转到登录页;如果未过期,生成新的 access_token 返回给客户端。

客户端携带新的 access_token 重新调用上面的资源接口imtoken。

客户端退出登录或修改密码后,注销旧的token,使 access_token 和 refresh_token 失效,同时清空客户端的 access_token 和 refresh_tokeimtoken。

微信网页授权是通过OAuth2.0机制实现的,也使用了双token方案imtoken。

微信网页授权方案

用户在第三方应用的网页上完成微信授权以后,第三方应用可以获得 code(授权码)imtoken。code的超时时间为10分钟,一个code只能成功换取一次access_token即失效。

第三方应用通过code获取网页授权凭证access_token和刷新凭证 refresh_tokenimtoken。

access_token是调用授权关系接口的调用凭证,由于access_token有效期(2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新imtoken。

refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权imtoken。

用户在第三方应用的网页上完成微信授权以后,第三方应用可以获得 code(授权码)imtoken。code的超时时间为10分钟,一个code只能成功换取一次access_token即失效。

第三方应用通过code获取网页授权凭证access_token和刷新凭证 refresh_tokenimtoken。

access_token是调用授权关系接口的调用凭证,由于access_token有效期(2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新imtoken。

refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权imtoken。

后端实现token过期还可以利用Redis来存储token,设置redis的键值对的过期时间imtoken。如果发现redis中不存在token的记录,说明token已经过期了。

微说互联网

扫描二维码推送至手机访问。

版权声明:本文由财掌柜中国发布,如需转载请注明出处。

本文链接:https://m.czgqygl.com/pt/634.html

分享给朋友:

“token 过期后,如何自动续期?” 的相关文章

投资者通常会以看跌的心态卖出比特币期货合约

投资者通常会以看跌的心态卖出比特币期货合约

  迈克尔?莫罗在接受电视节目采访时表示,在Genesis Global截至9月30日的有效贷款中只有三分之一被用于对冲或做空比特币合约。无论如何,60%的贷款资产组合仍然是比特币。   迈克尔?莫罗此次参加的电视节目,采访涵盖了各种有趣的讨论话题,这些话题中就包括提供比特币和以太坊等加密货币贷款的...

境外机构投资者进入 交易所债市首批交易完成

境外机构投资者进入 交易所债市首批交易完成

6月30日,沪深证券交易所《境外机构投资者债券交易及登记结算业务实施细则》正式施行,交易所会同中国结算及会员机构、托管机构等市场各方稳妥有序推进业务落地交易所。 记者获悉,《实施细则》施行首日,中国银行(香港)有限公司、中国银行澳门分行依照《实施细则》在深交所市场顺利完成首批交易;上交所市场的首单交...

久坐族、老年人、糖尿病人,什么锻炼方式最适合你?听ADA的!

久坐族、老年人、糖尿病人,什么锻炼方式最适合你?听ADA的!

什么锻炼方式最适合你?听ADA的ada! 体育锻炼不仅是糖尿病控制的三驾马车之一,更是普通人能拥有的最好的保持健康的手段……没有之一ada。毫无疑问,本届美国糖尿病协会年会(ADA 2019)上,体育锻炼也是重点探讨环节。 会场人满为患 在今年的讲题讨论中ada,来自加拿大Queen‘s Unive...

区块链的过去,现在和未来

区块链的过去,现在和未来

区块链不是因为比特币才发明的区块链,早在1990年就出现 区块链是什么区块链? 关于区块链的概念我们可以简单理解成是一种“资料写录的技术”区块链。它主要有3点特性,去中心化、共享性、难以篡改。 大多人开始知道“区块链”的概念是来自2008年一个自称是中本聪(Satoshi Nakamoto)的网友,...

区块链如何改变我们的生活

区块链如何改变我们的生活

我们探讨区块链的底层逻辑,其去中心,去信任,不可篡改的特性都是绕不开的话题,但是它的这些特性到底能够如何改变我们的生活,让资本趋之若鹜区块链。北京木奇移动技术有限公司,专业的区块链开发公司,欢迎交流合作。 我个人认为区块链会从三个角度改变我们的生活区块链。 交流方式的改变区块链。区块链催生的web3...

NBOX 官方发力,Token实用性进一步提升

NBOX 官方发力,Token实用性进一步提升

Token具备哪些实用性imtoken? NBOX团队将将在本月底以0.1u 从Metaverse玩家手中回收NBOX Tokenimtoken,之后上薄饼 NBOX Token 总供应量为1000亿枚,简称NBOXimtoken。所有NBOX Token 将在5年内逐步发行完毕。NBOX Toke...