使用POST的NodeJS express认证返回错误,在发送后不能设置报头
NodeJS express Authentication using POST returns Error Cannot Set Headers After they Are Sent
我正在尝试使用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);
});
这里的问题是,我得到不能设置头后,他们被发送。因此,当我删除resp.send()
时,这个错误就消失了。
但是如果我得到的响应总是false,即使用户是Authenticated。
请帮助。
你不能发送多个回复。
需要改变的地方
-
将查询更改为
select ONLY_STUFF_YOU_NEED from table where username & passwords match
之类的内容。注意sql注入 -
将查询封装在一个函数中,只有当auth匹配时才返回一个有效的
user
对象。将其移出控制器。示例+无耻插头- https://github.com/swarajgiri/express-bootstrap/tree/master/core -
验证完成后,使用
res.send
发送响应
相关文章:
- 不能从angular2中的子组件指定父组件中的数组
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 转义符不能与innerHTML一起使用
- JSON.parse没有'不能使用Javascript
- JS可以在Chrome中工作,但不能在Firefox中工作
- 砌体不能填补小缺口
- javascript扫雷器floodfill算法不能正常工作
- JavaScript指令不能像我想象的那样工作
- 为什么在这个网站上不能通过JS访问元素
- Facebook登录按钮没有'不能在Firefox上工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- AngularJS:$q.dedefe()不能由工厂方法共享
- 不能在同一页上进行多个jquery幻灯片切换
- SendGrid云模块:不能发送报头参数对象
- 在设置了content-type后发送后,不能设置报头
- 使用POST的NodeJS express认证返回错误,在发送后不能设置报头
- 不能在发送后设置报头.在NodeJS中使用HBS
- Express / node.js不能在发送后设置报头