【问题标题】:How to redirect the user back to the same page after authentication?身份验证后如何将用户重定向回同一页面?
【发布时间】:2016-10-04 17:26:09
【问题描述】:

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

场景:我想说,/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。不幸的是,由于登录页面应该返回主页,所以它这样做了。

connect-ensure-login 是我希望解决问题的方法,但事实并非如此。如何让它按我的需要工作?

【问题讨论】:

标签: node.js express passport.js passport-local


【解决方案1】:

您应该使用successReturnToOrRedirect 而不是successRedirect

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

【讨论】:

  • 为什么不在他们的文档中讨论这个问题?
  • 这就是我找到它的地方(特别是here),尽管我不得不承认它并没有很清楚地指出。
  • @robertklep 我认为是因为他们没有在README 页面上使用正确的格式,例如github.com/jaredhanson/connect-ensure-login/pull/22
  • @gevorg 好主意,公关。那是我在文档中找到解决方案的地方,但它都在一条线上,根本不是很可读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多