【发布时间】:2016-08-12 21:28:26
【问题描述】:
我使用 Passport 设置了我的 Express 应用程序以进行授权。当一个新用户注册时,我想做一个电子邮件验证。因此,在用户发布凭据后,/signup 路由获取请求并成功重定向到 /sendmail 进行验证。
app.post('/signup', passport.authenticate('local-signup', {
successRedirect : '/sendmail',
failureRedirect : '/signup'
}));
另外,为了防止未经授权的会话,在 /signup 路由中,用户被注销并且会话被销毁。
app.get('/sendmail', function(req, res) {
res.render('mailsent.ejs', {
message: 'An email with verification link has been sent to ' + req.user.email + '. Please follow the link in your mail to verify your account before logging in.'
});
/* From keeping user authenticated after signup (not verfied yet)*/
req.logOut();
req.session.destroy();
}
});
我的问题是,由于会话已经被销毁,当最终用户刷新浏览器或直接访问 /sendmail 路由时,浏览器什么也得不到。如何防止这种情况。换句话说,在 app.get('/sendmail') 路由中,我将如何检查会话是否开启(有效的 req 对象)否则重定向到 '/'。
【问题讨论】:
标签: node.js session express routes