【发布时间】:2019-07-08 21:44:09
【问题描述】:
我正在使用具有以下配置的本地策略:
passport.use(
new LocalStrategy((username, password, done) => {
process.nextTick(() => {
findByUsername(username, (err, user) => {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, { message: `Unknown user ${username}` });
}
if (user.password !== password) {
return done(null, false, { message: "Invalid password" });
}
return done(null, user);
});
});
})
);
login 端点定义如下:
server.post(
"/login",
passport.authenticate("local", {
successRedirect: "/",
})
);
这可以按预期成功运行,但是我不需要使用 successRedirect 选项,但是如果我删除此选项,我会在执行请求时收到 404 状态代码响应:
POST http://localhost:3001/login 404(未找到)
这里是没有successRedirect的代码:
server.post("/login", passport.authenticate("local"));
我也尝试使用其他选项设置 authenticate,但不使用 successRedirect,但我收到相同的错误消息。
我使用的依赖版本是:express 4.16.4、passport 0.4.0 和 passport-local 1.0.0
【问题讨论】:
-
您可以在带有响应的护照后添加其他中间件,并删除身份验证重定向成功。在documentation 你可以看到一个这样的例子。
-
谢谢,它成功了。这是我在我的案例中使用的语法:
server.post("/login", passport.authenticate("local"), (req, res) => { res.sendStatus(201); });
标签: node.js express passport.js middleware passport-local