gpt4 book ai didi

node.js - 快速更新 JWT 作为响应

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:20 26 4
gpt4 key购买 nike

我正在使用 JWT token 对应用程序中的用户进行身份验证。我将 token 发送到 req.headers.access_token 中的后端,检查是否在数据库中找到当前 token 以及它是否仍然有效,如果是,我更新 token (更新expires),然后转到当前路由。这部分按预期工作。

我的问题是将 token 发送回前端,以便客户端可以使用更新后的 token 发送下一个请求,但到目前为止我尝试的所有操作都没有正确更新 header :

res.header.access_token = token;
res.setHeader('access_token', token);

没用。

我在某处读到,我还需要添加Access-Control-Expose-Headers,因此我在快速设置中添加了以下内容:

app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization, access_token');
res.setHeader('Access-Control-Expose-Headers', 'X-Requested-With,content-type, Authorization, access_token');
next();
});

但同样的问题也存在。

问题:

  • 如何更新响应 header 中的 token ?
  • 人们通常如何同时处理多个请求(问题是,第二个请求将带有无效 token ,因为我刚刚更新了旧的)

我为我的 jwt 使用 jwt-simple lib

最佳答案

  • 如何更新响应 header 中的 token ?

使用res.set(field [, value]) (而不是 ExpressJS 4.x 中的 res.setHeader(field, value);。例如

res.set({
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',
'Access-Control-Allow-Headers': 'X-Requested-With,content-type,Authorization, access_token',
'Access-Control-Expose-Headers': 'X-Requested-With,content-type, Authorization, access_token'
});
  • 人们通常如何同时处理多个请求(问题是,第二个请求将带有无效 token ,因为我刚刚更新了旧请求)

您处理 token 的方式错误。您不必生成新 token 并在每次请求时发送回用户。创建 token 时,您可以为 token 指定一个过期时间(使用 jsonwebtoken NodeJS 模块)。

var jwt = require('jsonwebtoken');
var profile = {
first_name: 'John',
last_name: 'Doe',
email: 'john@doe.com',
};
var token = jwt.sign(profile, secret, { expiresInMinutes: 60*5 });

当请求到达服务器时,您可以使用 jwt.verify(token, secretOrPublicKey, [options, callback]) 进行验证。功能。或者,由于您使用的是 ExpressJS,因此您可以使用 JWT Express 中间件。

var expressJwt = require('express-jwt');
// protect /api routes with JWT
app.use('/api', expressJwt({secret: secret}));

引用express-jwt NodeJS 模块提供更多选项。

<小时/> 引用: Cookies vs Tokens. Getting auth right with Angular.JS

关于node.js - 快速更新 JWT 作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32881999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com