gpt4 book ai didi

javascript - 存储来自手动输入 URL 的 http 请求的数据

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:30 38 4
gpt4 key购买 nike

最近开始进行网络开发后,我已经摆脱了这个问题。我正在尝试实现用户密码重置功能。用户收到一封电子邮件,其中的 url 附加有随机 token ,然后他们单击该 url,并重定向到我的网站。现在,用户输入新密码,然后将其 token 与 sqlite 数据库中存储的 token 进行比较,并检查是否过期,如果一切正常,则处理新密码。

因此,我的问题是如何从 get 请求中获取查询详细信息,然后响应客户端以获取新密码,然后发送新的 post 请求,该请求将检索之前存储的 token 并继续。

我最初的想法是某种全局变量,即

app.get('/set', function(req, res) {
// var token = req.query.token;
// var email = req.query.email;
var token = '1';
var email = '11111@outlook.com';
res.send(email);
});

app.get('/get', function(req,res) {
console.log(res.app.get('reset-email'));
res.redirect('/');
});

但显然这是一个糟糕的主意。我相当确定我对 httprequests 的基本理解存在缺陷,但这一个问题困扰了我。任何帮助将不胜感激!

最佳答案

我的想法是:如果您使用快速 session ,您可以在 session 上设置 token 的值( req.session.token=<access_token> )并将其用于后续请求( var token=req.session.token )...

另一种选择是:您可以将 token 呈现为隐藏字段,作为密码重置表单的一部分。当用户使用新密码提交表单时,这会将 token 作为 POST 请求的一部分传递。

注意:使用res.app.get (以及一般的全局变量)是一个坏主意,因为该值将在请求之间共享。由于express中的请求是异步处理的,因此两个并行请求很可能(甚至很可能)会导致竞争条件。

编辑:示例片段详细解释我的评论:

app.get('/reset',function(req, res){
var token = req.query.token;
var html = `
<html>
<body>
<form method="POST" action="/reset">
<input type=text style="display:none;" name=token value="${token}"/>
<input type=password name=new_password value="" />
<input type=submit value=Submit />
</form>
</body>
</html>
`;
res.status(200);
res.type('.html');
res.send(html);
})

app.post('/reset', function(req, res){
//req.body should have both the password and the token
//(Assuming you have the body parser middleware available before this request handler)
})

关于javascript - 存储来自手动输入 URL 的 http 请求的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49626960/

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