最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何基于来自先前中间件的响应使用Express POST运行该功能

运维笔记admin18浏览0评论

如何基于来自先前中间件的响应使用Express POST运行该功能

如何基于来自先前中间件的响应使用Express POST运行该功能

我是MEAN.io的新手

下面写的函数(authDN)和单独运行一样正常,如下所示。

当我直接运行该函数时,我在控制台中得到了正确的响应

authDN('myuserName', 'myPassword', output);

但是我想用router.post运行该函数并运行函数(authDN),所以每当进行POST调用时我想根据authDN返回的响应显示响应,并且我想通过userNTpassword来自postData也对authDN起作用

有人可以帮我解决这个问题

var express = require('express');
var router = express.Router();
var ldap = require('ldapjs');
var bodyParser = require('body-parser');
var userNT;
var password;


var app = express();
function authDN(dn, password, cb) {
    var client = ldap.createClient({ url: 'ldap://localhost:389' });
    client.bind(dn, password, function (err) {
        client.unbind();
        cb(err === null, err);
    });

}

function output(res, err) {
    if (res) {
        console.log('success');
    } else {
        console.log('failure');
    }
}



app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: false })); // support encoded bodies

router.post('/login', postData, authDN(userNT, password, output));

function postData(req, res) {
    userNT = req.body.ntid;
    password = req.body.password
};


module.exports = router;
回答如下:
router.post('/login', postData);

function postData(req, res) {
    userNT = req.body.ntid;
    password = req.body.password;
    authDN(userNT, password, output,res);   //send res also
};

function authDN(dn, password, cb,res) {
    var client = ldap.createClient({ url: 'ldap://localhost:389' });
    client.bind(dn, password, function (err) {
        client.unbind();
       cb(err === null, err,res); //pass res to callback
    });

}

function output(fake_res, err, res) {
    if (fake_res) {
       console.log('success');
       res.send('success')   //here
    } else {
       console.log('failure');
       res.send('failure')   //here
    }
}
发布评论

评论列表(0)

  1. 暂无评论