最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何将最后访问的URL传递给passport.authenticate

运维笔记admin8浏览0评论

如何将最后访问的URL传递给passport.authenticate

如何将最后访问的URL传递给passport.authenticate

在我的应用程序的登录路由中,我使用的是passport.authenticate()方法:

router.post("/login", passport.authenticate("local", 
    {
        successRedirect: "/",
        failureRedirect: "/login"
    }), function(req, res){ });

但是只实现了固定重定向网址。我想将最后访问过的路由地址 - url传递给此进程,但在此实现中,authenticate()方法未接受请求和响应参数。

回答如下:

您可以使用“req.url”获取当前URL并在将用户重定向到/ login之前保存到会话中

req.session.recentUrl = req.url
res.send()

现在修改/登录路由到

router.post("/login", passport.authenticate("local",{
        successRedirect: req.session.recentUrl,
        failureRedirect: "/login"
}), function(req, res){ });

注意:确保在适当处理后清除req.session.recentUrl。

编辑:req没有定义你在路线后的这个中间件。

app.get('/protected', function(req, res, next) {
  passport.authenticate('local', function(err, user, profile) {
    if (err) { return next(err) }
    if (!user) { return res.redirect('/signin') }
    res.redirect('/account');
  })(req, res, next);
});

这个问题已经解决了,更多信息:https://github/jaredhanson/passport/issues/1

发布评论

评论列表(0)

  1. 暂无评论