我正在尝试编写一个对用户进行身份验证的函数,然后在绑定到 LDAP 时更改数据库中的一个变量。我收到错误 [ERR_HTTP_HEADERS_SENT]。我知道此错误表明我正在为单个请求发送多个响应,但我找不到发生这种情况的位置。任何帮助将不胜感激:'(
控制器
module.exports.aupAccept= async (req, res, next) => {
try {
//TO DO
var q_sam = req.body.sAMAccountName;
// var sam = req.body.sam;
var q_pwd = req.body.password;
service.aupAccept(q_sam, q_pwd, function(err, success){
if (err) {
res.status(500).send({ status: err.status, error: true, message: err.message });
return;
}
res.status(200).send({ status: success.status, error: false, message: success.message });
});
}
catch (e) {
next(createError(500, e));
}
};
服务
module.exports.aupAccept = (user, pwd, callback) => {
var opts = {
filter: `(&(objectClass=person)(sAMAccountName=${user}))`,
scope: 'sub',
attributes: ldapVar.data.userAttributes
};
service.ldapSearch(ldapVar.data.baseDN, opts, function (err, data) {
if (err || data.result.status != 0) {
callback({ status: 500, error: true, message: err }, null);
return;
}
var q_dn = data.entries[0].dn;
var q_client = ldap.createClient({ url: ldapServer });
q_client.bind(q_dn, pwd, function (err) {
var error = [];
error["error"] = 'data not found';
var nowDate= new Date();
var today = nowDate.getFullYear()+'/'+(nowDate.getMonth()+1)+'/'+nowDate.getDate();
var opts = {
policyAcceptDate: [today],
};
q_client.add(dn, opts, function (err, res) {
if (err) {
callback(err, null);
return;
}
else {
res.on('error', function (err) {
callback(err, null);
return;
});
}
});
q_client.unbind();
if (err) {
callback({ status: 500, error: true, message: err }, null);
return;
} else {
callback(null, { status: 200, error: false, message: "Authenticated Succesfully" });
}
});
});
};
用我的用户凭据发送了一个帖子请求 期望绑定然后将 policyAcceptDate 更新为现在的时间 收到 HTTP 标头请求错误