【问题标题】:How to pass last visited url to passport.authenticate - node.js express app如何将上次访问的 url 传递给 passport.authenticate - node.js express app
【发布时间】:2019-02-16 21:48:59
【问题描述】:

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

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

但仅实现了固定重定向 url。我想将上次访问的路由地址 - url 传递给这个进程,但是在这个实现中,authenticate() 方法没有接受请求和响应参数。

【问题讨论】:

  • 您是否将要重定向的网址保存到任何地方?
  • 不,我想以某种“聪明”的方式来做,也许是通过使用会话或其他方式。我没有太多的网络服务经验。

标签: node.js express session authentication passport.js


【解决方案1】:

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

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

现在修改 /login 路由到

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.com/jaredhanson/passport/issues/1

【讨论】:

猜你喜欢
  • 2017-10-29
  • 1970-01-01
  • 2013-01-30
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
  • 2017-04-09
相关资源
最近更新 更多