使用Express和Passport JS重定向Node中的路由

用户3554072

可以说我有一个使用Express Router定义的用于呈现付款表格的路线:

router.get('/payment', (req, res) => {
  if (req.user) {
    res.render('payment', { user: req.user });
  } else {
    res.redirect('/login');
  }
});

如果我尚未登录,则应进入登录页面,登录时,我想重定向回付款表。

我的登录会话是使用Passport构建的。这是我的POST登录路线的样子:

router.route('/login').post((req, res, next) => {
  req.assert('email', 'Please sign up with a valid email.').isEmail();
  req.assert('password', 'Password must be at least 4 characters long').len(4);

  var errors = req.validationErrors();
  if (errors) {
    req.flash('errors', errors);
    return res.redirect('/login');
  }

  passport.authenticate('login', {
    successRedirect: 'back',
    failureRedirect: '/login',
    failureFlash : true
  })(req, res, next);
});

成功后,我将重定向回上一页,但这将我带到首页,这很有意义。我不确定登录是否成功,如何将用户重定向到付款表单。

一种

您可以通过几种方法来执行此操作。基本思想是存储您希望用户重定向到的URL。您可以通过GET参数将其存储在URL本身中,也可以使用会话。

这就是整个想法。

例如,要使用会话:

router.get('/payment', (req, res) => {
  if (req.user) {
    res.render('payment', { user: req.user });
  } else {
    req.session.returnURL = '/payment';
    res.redirect('/login');
  }
});

然后在您的/login路线中:

router.route('/login').post((req, res, next) => {
  req.assert('email', 'Please sign up with a valid email.').isEmail();
  req.assert('password', 'Password must be at least 4 characters long').len(4);

  var errors = req.validationErrors();
  if (errors) {
    req.flash('errors', errors);
    return res.redirect('/login');
  }

  passport.authenticate('login', {
    successRedirect: req.session.returnURL || 'back',
    failureRedirect: '/login',
    failureFlash : true
  })(req, res, next);
});

该行req.session.returnURL || 'back'确保如果returnURL会话中不存在,'back'则将其代替。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用express.bodyParser()和passport.js

来自分类Dev

使用 Passport 和 Express JS 登录后如何保存会话?

来自分类Dev

在Express中与路由重定向异步

来自分类Dev

node.js中位置和重定向之间的区别

来自分类Dev

在mongodb中使用Express和Passport的Node.js中的简单登录页面

来自分类Dev

使用Java重定向HTML中的路由

来自分类Dev

重定向后编辑响应(node.js和express)

来自分类Dev

使用Express的Node.js:如何重定向POST请求

来自分类Dev

使用express和node.js重定向301。GET未被调用

来自分类Dev

使用passport.js重定向

来自分类Dev

使用 Facebook 登录、Passport、Express、React 和 Node 时没有设置用户 cookie

来自分类Dev

使用passport.js和express.js进行单元测试登录

来自分类Dev

带有Express的NodeJ:如何从Node.js中的app.post()重定向

来自分类Dev

通过forcedomain(node.js,express)中的环境变量设置端口时重定向循环

来自分类Dev

无法使用Passport.js和Express 4访问req.user

来自分类Dev

使用route.rb中的格式重定向路由

来自分类Dev

使用[Laravel]中的两个参数重定向路由

来自分类Dev

使用route.rb中的格式重定向路由

来自分类Dev

在node.js中的其他位置和端口上重定向

来自分类Dev

console.log和node.js中的重定向不起作用?

来自分类Dev

console.log和node.js中的重定向不起作用?

来自分类Dev

身份验证后重定向到Passport.js中的上一页(不重复)Node.js

来自分类Dev

使用Node.js,Express,twit和passport-twitter代表另一个用户发布到Twitter

来自分类Dev

使用Node.js和Passport进行身份验证后,如何将用户重定向至带有其ID的主页?

来自分类Dev

Express 4.0和Passport-重定向到Facebook不起作用

来自分类Dev

如何在Vue.js 3中使用vue路由器将404路由重定向到Home

来自分类Dev

Node.js页面在AJAX登录上重定向?重定向后使用函数调用?

来自分类Dev

使用Docker为Node,我基于Express的Node应用,MongoDb和NodeBB构建映像,并通过Passport连接

来自分类Dev

使用 express 和 ES6 类在 node js rest api 中查找路由的问题

Related 相关文章

  1. 1

    使用express.bodyParser()和passport.js

  2. 2

    使用 Passport 和 Express JS 登录后如何保存会话?

  3. 3

    在Express中与路由重定向异步

  4. 4

    node.js中位置和重定向之间的区别

  5. 5

    在mongodb中使用Express和Passport的Node.js中的简单登录页面

  6. 6

    使用Java重定向HTML中的路由

  7. 7

    重定向后编辑响应(node.js和express)

  8. 8

    使用Express的Node.js:如何重定向POST请求

  9. 9

    使用express和node.js重定向301。GET未被调用

  10. 10

    使用passport.js重定向

  11. 11

    使用 Facebook 登录、Passport、Express、React 和 Node 时没有设置用户 cookie

  12. 12

    使用passport.js和express.js进行单元测试登录

  13. 13

    带有Express的NodeJ:如何从Node.js中的app.post()重定向

  14. 14

    通过forcedomain(node.js,express)中的环境变量设置端口时重定向循环

  15. 15

    无法使用Passport.js和Express 4访问req.user

  16. 16

    使用route.rb中的格式重定向路由

  17. 17

    使用[Laravel]中的两个参数重定向路由

  18. 18

    使用route.rb中的格式重定向路由

  19. 19

    在node.js中的其他位置和端口上重定向

  20. 20

    console.log和node.js中的重定向不起作用?

  21. 21

    console.log和node.js中的重定向不起作用?

  22. 22

    身份验证后重定向到Passport.js中的上一页(不重复)Node.js

  23. 23

    使用Node.js,Express,twit和passport-twitter代表另一个用户发布到Twitter

  24. 24

    使用Node.js和Passport进行身份验证后,如何将用户重定向至带有其ID的主页?

  25. 25

    Express 4.0和Passport-重定向到Facebook不起作用

  26. 26

    如何在Vue.js 3中使用vue路由器将404路由重定向到Home

  27. 27

    Node.js页面在AJAX登录上重定向?重定向后使用函数调用?

  28. 28

    使用Docker为Node,我基于Express的Node应用,MongoDb和NodeBB构建映像,并通过Passport连接

  29. 29

    使用 express 和 ES6 类在 node js rest api 中查找路由的问题

热门标签

归档