使用Passport身份验证但不成功

时间:2019-02-14 19:18:06

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

我正在使用具有以下配置的本地策略:

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.4passport 0.4.0passport-local 1.0.0

1 个答案:

答案 0 :(得分:0)

尝试一下

def softmax(x):
    f = np.exp(x - np.max(x))  # shift values
    return f / f.sum(axis=0)

softmax([1,3,5])
# prints: array([0.01587624, 0.11731043, 0.86681333])

softmax([2345,3456,6543,-6789,-9234])
# prints: array([0., 0., 1., 0., 0.])