{ try { const use-6ren">
gpt4 book ai didi

javascript - 登录系统在 Postman 中正常工作,但在浏览器中不正常

转载 作者:行者123 更新时间:2023-12-01 16:25:16 24 4
gpt4 key购买 nike

这是我的路由器

 router.post("/login", async (req, res) => 
{
try
{
const user = await User.findByCredentials(req.body.email, req.body.password)
// console.log(user)
const token = await user.generateAuthToken()
// console.log(token)
res.redirect("/takvim")
}
catch(e)
{
res.status(400).redirect("/")
}
})

这是我在上面的函数中使用的用户模型

UserSchema.methods.generateAuthToken = async function () 
{
const user = this
const token = jwt.sign({_id: user._id.toString()}, "secret")
user.tokens = user.tokens.concat({token})
await user.save()
return token
}

UserSchema.statics.findByCredentials = async function (emails, passwords)
{
const user = await User.findOne({email: emails})
console.log(user)
const isMatch = await bcrypt.compare(passwords, user.password)
if(!isMatch)
{
throw new Error("unable to login")
}
return user
}

我正在使用按钮从前端发出请求

$uyeolForm.addEventListener("submit", () => 
{
if(!$uyeolFormEmail.value.includes(".com"))
{
return $uyeolFormHata.innerHTML = "email geçersiz"
}
const xhr = new XMLHttpRequest();
let form = JSON.stringify({
email: $uyeolFormEmail.value,
password: $uyeolFormPassword.value
});
xhr.open("POST", "/login")
xhr.setRequestHeader('Content-type', 'application/json')
xhr.send(form);
})

问题是当我使用 postman 时,应用程序将我重定向到我想要的页面并且没有给出错误。当我使用按钮发送请求时,它仍然会找到用户,但它不会将我重定向到我期望的页面,并且在控制台中我看到了用户(预期)和 null 这不是预期的。

谢谢大家。

最佳答案

submit 时,您正在使用 XMLHttpRequest 发出 HTTP 请求事件已触发,但您并未阻止表单提交的默认行为。

因此 XMLHttpRequest 对象被创建并发出请求,然后立即(并且可能取消请求取决于事情进展的速度)<form>提交到 action 中指定的 URL .

您说端点被命中两次,一次是在您获得预期用户的地方,一次是在您没有的地方。

当您获得用户时,您期望它来自 XHR 提交。

如果你不这样做,那是来自常规表单提交(它不会被 JSON 编码,因为 HTML 表单不支持 JSON 编码,所以它找不到用户,因为它没有解码数据表格正确)。


既然您说过要重定向,请不要使用 Ajax。 Ajax 是一种在不离开当前页面的情况下发出 HTTP 请求的方法。

更改服务器端代码以接受 <form> 格式的数据正在对其进行编码(可能是 application/x-www-form-urlencoded,除非您使用 enctype 属性更改了它)。

关于javascript - 登录系统在 Postman 中正常工作,但在浏览器中不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62734141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com