node.js - 如何将上次访问的 url 传递给 passport.authenticate - node.js express app
问题描述
在我的应用程序的登录路径中,我使用了 passport.authenticate() 方法:
router.post("/login", passport.authenticate("local",
{
successRedirect: "/",
failureRedirect: "/login"
}), function(req, res){ });
但是只实现了固定的重定向 url。我想将上次访问的路由地址 - url 传递给这个进程,但是在这个实现中,authenticate() 方法没有接受请求和响应参数。
解决方案
您可以使用“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
推荐阅读
- vue.js - 不在 Vue 应用程序根文件夹中的 dotenv 文件的不同位置?
- python - 错误选项规范无效 - AWS Elasticbeanstalk - Django
- python - 在 Django url 中传递 QuerySet
- linux - 黑客可以欺骗他选择的任何 IP 地址吗?
- r - 检测有序字符串序列并使用 R 对它们进行分组
- php - SQL 查询 Codeigniter 查询生成器 PHP
- rust - 如何在不使用大量内存的情况下将所有标准输入写入标准输出?
- python - Sklearn 中的 Normalize 函数需要二维数组
- powerbi - Power BI:使用不相关的日期表创建度量
- c# - 当请求正文包含转义字符时,如何绑定到 Web api 模型?