0

我使用 JsonWebtoken 在我的 web 应用程序中使用 express 在节点 js 中创建访问令牌以进行身份​​验证。

我想为这个令牌定义一个到期日期,但我不知道它如何通过用户执行一些活动来刷新“iat”!基本上,如果用户在自上次活动后的 30 分钟内执行某些活动,我希望到期日期重新开始!

jwt.sign({ _userName: userName, _name: name + ' ' + sureName, _role: role.name }, config.get('jwtPrivateKey'),);

这就是我创建令牌的方式。所以问题是如果用户在 30 分钟内有活动,我如何刷新令牌并发送一个新令牌,以便我们可以确保用户不需要在 30 分钟内登录并且令牌将是有效的?!然后如果用户超过 30 分钟没有执行任何任务,我希望令牌过期!

4

2 回答 2

1

刷新访问令牌的标准方法是创建一个单独的令牌,即“刷新令牌”(字面意思)。这是一篇帮助您入门的博文,博文

基本思想是将两个令牌都发送给客户端。访问令牌在 X 时间内过期,而刷新令牌在更长的时间内过期。一旦客户端从服务器收到错误(未经身份验证),它就会向服务器发送另一个请求,请求新的访问令牌。它在发出此请求时传递刷新令牌。服务器检查刷新令牌是否有效,如果有效,它将向客户端返回一个新的刷新/访问令牌对。重要的是刷新令牌只能用于获取新的访问令牌,而访问令牌用于从服务器检索数据。

于 2020-07-22T20:33:55.427 回答
0

我使用它修复它,以便我可以在需要时生成一个新的

app.use(function (message, req, res, next) {
    try {
        if (typeof message === 'string') {
            let userName = req.body._userName;
            let name = req.body._name;
            let role = req.body._role;
            let token = generateToken(userName, name, role);
            res.header('z-auth-token', token).status(200).send(message);
        } else {
            next(message);
        }
    } catch (e) {
        next(e);
    }
    
});
于 2020-07-23T11:48:02.490 回答