javascript - 使用 POST 的 NodeJS 快速身份验证返回错误 发送后无法设置 header

标签 javascript mysql node.js authentication express

我正在尝试使用 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/

相关文章:

javascript - 我怎么知道 Firebase 查询何时结束

c++ - centos 6 中的 mysql 连接器 cpp undefined reference

mysql 字段值应该大于零

php - 如何检查项目是否正确保存在 Laravel 的数据库中?

node.js - 混合 http.Server 和 Express 应用程序

javascript - SystemJS/Aurelia 应用程序在 PhantomJS 中中断

javascript - Drop Ins Dropbox 插件错误

javascript - setTimeout和非定时器(例如UI)事件回调的顺序是否按照时间保证?

javascript - 通过 jQuery 发布一个巨大的 html 表单

node.js - 使用 Express 将 Node.js ServerResponse 发送回客户端