使用 express.js 向同一个 url 发送多个 post 请求

Sending multiple post requests to same url using express.js

在我的网站上,我有一个登录表单,用户可以在其中输入他们的信息,当他们提交 post 请求时,会检查他们的信息,如果有效,我会将他们重定向回登录表单,然后他们在其中输入发送到他们电子邮件的代码。我的问题是,当第二次发出 post 请求时,我将如何使用相同的 url 而不必再次进行验证。

Auth.js

//Login Route
router.post('/login', async(req, res) => {
    //Validate Data
    const { error } = loginValidation(req.body);

    if (error) {
        let msg = error.message;
        return res.cookie('loginError', msg, [{ httpOnly: true }]).redirect('/login');;

    }
    //Check if user exists
    const user = await User.findOne({ email: req.body.email });
    if (!user) {
        let msg = 'Email or password is invalid!'
        return res.cookie('loginError', msg, [{ httpOnly: true }]).redirect('/login');;
    }


    //Check if password is correct
    const validPass = await bcrypt.compare(req.body.password, user.password);
    if (!validPass) {
        let msg = 'Email or password is invalid!'
        return res.cookie('loginError', msg, [{ httpOnly: true }]).redirect('/login');;
    }

    const verificationCode = Math.floor(100000 + Math.random() * 900000);
    email.loginCode(req.body.email, verificationCode);
    return res.cookie('formComplete', 'true', [{ httpOnly: true }]).redirect('/login');
    //Create and assign a jwt
    const token = jwt.sign({ _id: user._id }, process.env.TOKEN_SECRET);
    res.header('auth-token', token).redirect('/dashboard');
});

抱歉,如果这是一个愚蠢的问题,我是 express.js 的新手,如果您需要更多信息,请告诉我。

其实跟express没有太大关系
您在询问服务器中的“状态”。

如果你要“重构”你的问题,它可能会变成“我有这个登录的用户,如何在他访问任何路由之前验证他”

解可以有几种

  1. 添加全局状态。假设isVerified = false,第一次验证后,你设置为true
  2. 正如您在我上面的“重构”问题中看到的,session 是您用来检查用户登录或购物车的东西...

我建议你深入研究上面的两个解决方案,例如第一个,在哪里声明全局状态?如果我们需要检查多个用户怎么办?