Node.js 用户使用express登录后重定向到原始页面
我正在使用express.js和passport.js来实现身份验证,在以下情况下我想将用户重定向到原始URL:Node.js 用户使用express登录后重定向到原始页面,node.js,express,authentication,redirect,passport.js,Node.js,Express,Authentication,Redirect,Passport.js,我正在使用express.js和passport.js来实现身份验证,在以下情况下我想将用户重定向到原始URL: 当用户按下“/pageA”上的登录按钮时(在他/她登录后,他/她应重定向到“/pageA”) 当用户转到URL(例如“/secretPage”)时,如果用户未登录,该URL将重定向到登录页面(在用户登录后,他/她应重定向到“/secretPage”) 目前,我尝试使用一个名为“express back”的包来解决这个问题。它使用会话来跟踪客户端访问过的前两个路径,并将它们分别记录在r
router.post('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) {
return next(err);
}
if (!user) {
req.flash('error', 'Please enter the correct username and password');
res.redirect('/login'); // Redirect to the login page if there is login failure
return
}
req.logIn(user, function(err) {
if (err) {
return next(err);
}
req.flash('success', 'You have logged in successfully!')
res.redirect(req.prevPrevPath) // Ideally, it will redirect to the original page the client has visited
return
});
})(req, res, next);
});
例如,如果用户按下“/pageA”上的登录按钮并登录,客户端访问的URL序列将是:
.get('/pageA')(prevPath)-->.get('/login')(prevPath)-->.post('/login')(currentPath)
这些代码工作正常,仅当用户立即成功登录时才会将用户重定向到“/pageA”。但是,如果用户一次或多次输入错误的用户名或密码,并且没有第一次登录,则URL顺序如下:
.get('/login')(prevPath)-->.get('/login')(prevPath)-->.post('/login'))
因此,在用户成功登录后,它会将用户重定向到登录页面,而不是“/pageA”
有人知道如何解决这个问题吗?我感谢你的帮助