我在我的节点js应用程序中使用JWT令牌进行身份验证,并在生成新令牌时使用字段custid,token,sessionValid(boolean)在数据库中进行更新。
现在我已将令牌到期时间设置为5分钟。因此,一旦令牌过期,它应自动更新db记录并使sessionValid为false。我有一个休息调用来更新DB。原因是采用这种方法是我实现SSO,而另一个应用程序将使用相同的休息调用进行会话验证。
以下是我如何生成令牌
的代码var isExpired = false;
router.post('/auth', passport.authenticate(
'local', {
session: false
})generateToken, inserttoken,respond);
function generateToken(req, res, next) {
token = jwt.sign({
id: req.user.id,
},SECRET, {
expiresIn: 5 * 60
});
req.token = token;
next();
}
function inserttoken(req,res,next){
//In this function Im doing rest call to update the db with the token generated
}
function respond(req, res) {
res.cookie('customerid', req.user.id, { expires: new Date(new Date().getTime()+1*60*
1000),httpOnly: true })
res.cookie('token', req.token, { expires: new Date(new Date().getTime()+1*60*
1000), httpOnly: true })
res.status(200).json({
user: req.user,
token: req.token
});
}
那么当令牌过期时,如何自动自动进行休息呼叫并更新数据库。我甚至将这些保存在我的饼干中。
任何帮助表示赞赏。谢谢!
答案 0 :(得分:1)
如果您正在存储令牌,那么您不会关注无会话。所以 它不是一种RESTful。
JWT令牌基于签名,可以验证,需要存储。 要维持会话,请在前端更新令牌,并保持到期时间。
Please follow this link for better understanding
希望有所帮助!
答案 1 :(得分:0)
如果你在控制器中使用角度作为前端,你可以在间隔中反复调用方法并在后端发送它以检查它是否有效,否则需要存储JWT令牌。或者其他选项是将JWT存储在在到期呼叫休息时设置cookie并设置到期时间。