使用 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没有太大关系
您在询问服务器中的“状态”。
如果你要“重构”你的问题,它可能会变成“我有这个登录的用户,如何在他访问任何路由之前验证他”
解可以有几种
- 添加全局状态。假设
isVerified
= false,第一次验证后,你设置为true
- 正如您在我上面的“重构”问题中看到的,
session
是您用来检查用户登录或购物车的东西...
我建议你深入研究上面的两个解决方案,例如第一个,在哪里声明全局状态?如果我们需要检查多个用户怎么办?
在我的网站上,我有一个登录表单,用户可以在其中输入他们的信息,当他们提交 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没有太大关系
您在询问服务器中的“状态”。
如果你要“重构”你的问题,它可能会变成“我有这个登录的用户,如何在他访问任何路由之前验证他”
解可以有几种
- 添加全局状态。假设
isVerified
= false,第一次验证后,你设置为true - 正如您在我上面的“重构”问题中看到的,
session
是您用来检查用户登录或购物车的东西...
我建议你深入研究上面的两个解决方案,例如第一个,在哪里声明全局状态?如果我们需要检查多个用户怎么办?