身份验证后如何将用户重定向回同一页面?

How to redirect the user back to the same page after authentication?

我是整个节点的新手,密码很有趣,而且似乎对许多身份验证都很有效,所以它看起来很酷。

场景:我想说,只有当用户登录时,/profile 才能继续。

这是我做的路线,

var express = require('express');
var router = express.Router();

其余部分在名为 router/index.js 的文件中

var passport = require('passport');
var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;


router.post('/login', passport.authenticate('login', {
    successRedirect: '/home',
    failureRedirect: '/',
    failureFlash : true  
}));


router.get('/profile', ensureLoggedIn('/'), function(req, res){
    res.json({ user: req.user });
});

所以,根据我的理解和意愿,当我进行GET /profile时,它必须转到登录页面,然后重定向到GET /profile。不幸的是,由于登录页面应该 return 主页,所以它确实如此。

connect-ensure-login 是我期望解决问题的方法,但没有。如何让它按我的需要工作?

你应该使用 successReturnToOrRedirect 而不是 successRedirect:

router.post('/login', passport.authenticate('login', {
  successReturnToOrRedirect : '/home',
  failureRedirect           : '/',
  failureFlash              : true  
}));