我已成功/login
登录用户,并能够显示我的/profile
路线信息。
现在,我正在尝试/logout
进行身份验证的用户,但似乎不起作用。尝试通过注销路径时,什么都没有发生。 JWT令牌不会过期,因此即使单击注销后/profile
数据也在那里。
//logout testing
router.post('/logout' , checkAuth, (req, res) => {
req.logOut();
res.status(200).send(["logged out"]).redirect('/login');
});
这是我的 /个人资料:-
router.get('/profile', checkAuth, (req, res, data) =>{
User.find(req.userData, function(err, users) {
res.send(req.userData);
});
});
我希望注销是全局的。用户必须从每个登录的设备上注销
答案 0 :(得分:0)
使用JWT时,您的服务器是无状态的,因此服务器中没有会话。您必须从客户端删除存储的JWT,或者(但我不喜欢这种技术,这不是一个好习惯),当您注销并检查是否已将“已撤销” JWT的列表存储在服务器端时,客户端发送的令牌在此列表中。您还可以存储上一次注销的日期,并检查JWT的日期是否比注销日期最旧,如果JWT的日期最晚则无效。