快速更新智威汤逊作为回应
我正在使用JWT令牌来validation我的应用程序中的用户。 我发送我的令牌到后端req.headers.access_token
检查我是否在数据库中find当前令牌,如果它仍然有效,如果是,我更新令牌(更新expires
),然后转到当前路由。 这部分工作就像它应该的。
我的问题是发回令牌到前端,以便客户端可以发送更新的令牌下一个请求,但我到目前为止所尝试的一切都没有正确更新头:
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(); });
但同样的问题存在。
问题:
- 我怎样才能更新回应标题中的令牌?
- 人们通常如何处理多个请求(问题是,第二个请求将带有无效的令牌,因为我只是更新了旧的请求)
我为我的jwt使用jwt-simple
lib
- 我怎样才能更新回应标题中的令牌?
在ExpressJS 4.x中使用res.set(field [, value])
(而不是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' });
- 人们通常如何处理多个请求(问题是,第二个请求将带有无效的令牌,因为我只是更新了旧的请求)
你正在以错误的方式处理令牌。 您不必生成一个新的令牌,并在每个请求中发回给用户。 在创build令牌时,可以给令牌一个过期时间 (使用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])
函数进行validation。 或者因为您使用ExpressJS,您可以使用JWT Express中间件。
var expressJwt = require('express-jwt'); // protect /api routes with JWT app.use('/api', expressJwt({secret: secret}));
请参阅express-jwt NodeJS模块以获取更多选项。
参考 : 曲奇与令牌。 使用Angular.JS获得权限