身份验证后如何将用户重定向回同一页面?
Posted
技术标签:
【中文标题】身份验证后如何将用户重定向回同一页面?【英文标题】: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 是我希望解决问题的方法,但事实并非如此。如何让它按我的需要工作?
【问题讨论】:
Redirecting to previous page after authentication in node.js using passport.js的可能重复 @gevorg 我同意这个问题是重复的,只是接受的答案(有 38 个赞成!)根本不是 Passport 特定的。第二个答案(this one)很好,我可能应该在评论中链接到它而不是发布答案...... @robertklep 同意,你的回答是这个问题的最佳选择。 【参考方案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 好主意,公关。那是我在文档中找到解决方案的地方,但它都在一条线上,根本不是很可读。以上是关于身份验证后如何将用户重定向回同一页面?的主要内容,如果未能解决你的问题,请参考以下文章