刷新令牌Jsonwebtoken

27

我在NodeJs API应用程序中使用jsonwebtoken来验证API应用程序中的用户。 我设置的流程如下:

1)用户通过注册API进行注册,访问令牌使用以下方式生成:

var jwt = require('jsonwebtoken');
var token = jwt.sign(user, _conf.authentication.superSecret, {
    expiresIn: 1440 // I intend to keep it short.
});

2) 例如,令牌在24小时后过期。此令牌将返回到客户端移动应用程序,在所有后续API请求中用作标题。

我想知道如何处理JWT的刷新令牌。目前,我没有刷新令牌的机制。因此,如果令牌在24小时后过期,我希望客户端(移动应用程序)能够请求新的访问令牌。 提前致谢。


请看我的这篇帖子:http://stackoverflow.com/questions/38766688/understanding-json-web-token-jwt-in-context-of-web-authentication它解释了使用刷新令牌的设置。 - B M
1个回答

37

我在一个项目中遇到同样的问题。

1)我创建了刷新令牌并在用户登录时返回它(使用jsonwebtoken)。我将刷新令牌与用户一起保存。

2)当客户端使用过期的令牌发送请求时,服务器返回401。

3)我实现了一个新的路径来刷新令牌。它接收刷新令牌和用户作为参数,并返回一个新的令牌(jsonwebtoken)。

4)(可选)您可以实现一种使刷新令牌无效化的机制,以防有人窃取它。

我的实现基于这篇文章,其中包含非常好的代码片段:

JWT中的刷新令牌(Node.js实现)

希望对您有所帮助。


如果你需要任何帮助或其他方面的支持,请告诉我。 - David Vicente
1
此网站无法访问:https://solidgeargroup.com/refresh-token-autenticacion-jwt-implementacion-nodejs - Erick Cortorreal
4
有没有这个答案的Github仓库? - dennbagas
@dennbagas,你能用那种方式做吗? - jecorrales
链接已失效。似乎已经移动到这里 - callmekatootie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接