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 小时内过期,我希望客户端(移动应用程序)能够请求新的访问令牌。提前致谢。

4

1 回答 1

37

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

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

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

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

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

我在这篇文章中基于我的实现,非常好的片段:

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

希望能帮助到你

于 2016-11-21T10:05:39.373 回答