【发布时间】:2013-07-24 07:51:34
【问题描述】:
这是一个奇怪的问题。 Im Passport 的“本地策略”适用于我的 express 应用程序,但我遇到了一个奇怪的问题。
基本上,我有 3 条路线。每个都有一个身份验证检查。
app.get('/admin', authenticatedOrNot, adminRoute.index);
app.get('/admin/new', authenticatedOrNot, adminRoute.newpost);
app.post('/admin/new', authenticatedOrNot, adminRoute.create);
authenticatedOrNot 方法很简单:
var authenticatedOrNot = function(req, res, next){
if(req.isAuthenticated()){
next();
}else{
res.redirect("/login");
}
}
非常适合登录管理区域并检查用户是否已登录,但是当我将表单提交到“/admin/new”发布路径时,浏览器会挂起。即使使用了 console.log,控制台也没有任何反应:
exports.create = function(req, res){
console.log(req);
// Database logic here
res.redirect('/admin');
}
我似乎无法让它工作。它只是挂起,并最终失败。浏览器控制台只是在网络请求中显示“待处理”。
我尝试从 post 路由和相同的问题中删除 'authenticatedOrNot' 方法,但如果我删除所有三个它就可以正常工作。
我被难住了。
有帮助吗?还有其他人遇到这个吗?
【问题讨论】:
-
表格是否张贴到正确的路线?检查浏览器的开发工具以确认实际请求的路线正确。否则你的代码对我来说很好
-
是的,我检查了网络。甚至改变了一点,以防我快疯了。好叫声。
-
在您的发帖路线
adminRoute.create中,您确定要发回一些回复吗?您必须确定要结束响应。 -
是的,我正在发送 res.redirect('/admin');但即使我将其更改为简单的 res.send(200),仍然存在问题。它与护照有关。它在没有身份验证的情况下完美运行,但被它破坏了。
-
我发现 Express 和其他东西的配置顺序很重要。甚至您注册路线的顺序。试着摆弄它。
标签: node.js mongodb authentication express passport.js