需要 JWT expiresIn 字段显示在控制台上
Posted
技术标签:
【中文标题】需要 JWT expiresIn 字段显示在控制台上【英文标题】:Need of JWT expiresIn field to display on console 【发布时间】:2019-03-12 19:32:39 【问题描述】:如何在 JWT 中获取到期时间? 我想注意每个用户登录令牌的过期时间,现在我可以显示他们的用户 ID、电子邮件 ID 但无法显示 expiresIn 时间。请指出我应该在哪里编辑我的代码以显示 expiresIn 字段。
router.post("/login", (req, res, next) =>
User.find( username: req.body.username )
.exec()
.then(user =>
if (user.length < 1)
return res.status(401).json(
message: "Auth failed"
);
bcrypt.compare(req.body.password, user[0].password, (err, result) =>
if (err)
return res.status(401).json(
message: "Auth failed"
);
if (result)
const token = jwt.sign(
username: user[0].username,
email: user[0].email,
userId: user[0]._id,
,
process.env.JWT_KEY,
expiresIn: "10h"
);
return res.status(200).json(
message: "Auth successful",
token: token,
userId: user[0]._id,
expiresIn: user[0].exp,
);
res.status(401).json(
message: "Auth failed"
);
);
)
.catch(err =>
console.log(err);
res.status(500).json(
error: err
);
);
);
这是我现在得到的输出。
"message": "认证成功", “令牌”: “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImRhcnNoYW4iLCJlbWFpbCI6ImRhcnNoYW5hbi4yNEBnbWFpbC5jb20iLCJ1c2VySWQiOiI1YjU3MTcxNmRjODlhYzZiNGUyY2E0MTciLCJpYXQiOjE1Mzg5ODEyOTYsImV4cCI6MTUzONn0.k0PVole653f_pB3CrQLtdUmv7-c00x1irbQph2i2XaE” “用户 ID”:“5b571716dc89ac6b4e2ca417”, “电子邮件”:“darsh4@gmail.com”
【问题讨论】:
您的代码与您的输出不匹配 【参考方案1】:看起来您没有发送正确的expiration
响应。
let expiration = '10h'
const token = jwt.sign(
username: user[0].username,
email: user[0].email,
userId: user[0]._id,
,
process.env.JWT_KEY,
expiresIn: expiration
);
return res.status(200).json(
message: "Auth successful",
token: token,
userId: user[0]._id,
expiresIn: expiration, //set expiration time
);
对您有帮助的参考链接:here
【讨论】:
会检查这个方法以上是关于需要 JWT expiresIn 字段显示在控制台上的主要内容,如果未能解决你的问题,请参考以下文章