我正在尝试使用 post 构建基本的身份验证
app.post("/api/auth",function(req,resp)
{
var username = req.body.username||req.param('username');
var password = req.body.password||req.param('password');
log("Performing Log Check");
log(username + " "+password);
var sent ={};
sent.status =false;
sent.authenticated = false;
var query = {}
query.sql= "SELECT * FROM voix_auth";
query.timeout= 4000; // 40s
connection.query(query, function (error, rows, fields)
{
if(!error)
{
var i=0;
while(i!=rows.length)
{
if(rows[i].username == username && rows[i].password == password)
{
log(rows);
sent.status = true;
sent.authenticated = true;
sent.token = tokenData;
log(sent);
break;
}
i+=1;
}
resp.send(sent);
} //Error Ends
else
{
log("Error Occured");
}
}); //connection Query
log(sent);
resp.send(sent);
});
这里的问题是我得到 Cannot set header After They are Sent.
因此,当我删除 resp.send()
时,此错误就消失了。
但是,如果我得到的响应始终为 false,即使用户已通过身份验证。
请帮忙。
最佳答案
您不能发送多个回复。
需要改变的事情
将查询更改为
从用户名和密码匹配的表中选择 ONLY_STUFF_YOU_NEED
。注意sql注入(inject)。将查询包装在一个函数中,仅当身份验证匹配时才返回有效的
user
对象。将其移到 Controller 之外。示例+无耻插件-https://github.com/swarajgiri/express-bootstrap/tree/master/core身份验证完成后,使用
res.send
发送响应
关于javascript - 使用 POST 的 NodeJS 快速身份验证返回错误 发送后无法设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32580406/