Som*_*der 2 javascript oauth-2.0 express passport.js express-session
我正在使用护照通过discord oauth2 对我的用户进行身份验证。我希望它们被重定向回原来的页面,而不是主页或仪表板。
我尝试将 URL 存储在会话中,如此处所述,但它不会保留到下一个请求。
我的页面需要身份验证的中间件:
module.exports = (req, res, next) => {
if (req.user) {
next();
}
else {
req.session.returnTo = req.originalUrl;
res.redirect('/auth');
}
};
Run Code Online (Sandbox Code Playgroud)
认证路线:
router.get("/auth", passport.authenticate("discord"));
router.get("/auth/redirect", passport.authenticate("discord", {
failureRedirect: "/auth/forbidden"
}), (req, res) => {
console.log(req.session); // doesnt have returnTo inside anymore ?
res.redirect(req.session.returnTo || '/');
delete req.session.returnTo;
});
Run Code Online (Sandbox Code Playgroud)
console.log 显示用户已成功通过身份验证,但 returnTo 字段不再存在。
小智 9
嗨,我遇到了同样的问题。尝试添加keepSessionInfo: true到passport.authenticate.
router.get("/auth", passport.authenticate("discord", {
failureRedirect: "/auth/forbidden", keepSessionInfo: true
}), (req, res) => {
console.log(req.session); // doesnt have returnTo inside anymore ?
res.redirect(req.session.returnTo || '/');
delete req.session.returnTo;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1752 次 |
| 最近记录: |