1

我在 node.js 中使用 ldapauth-fork 在 ldap 中获取用户信息,但是当我尝试获取 user.jpegPhoto 时,为什么它不能显示此图像?

我试过这个:

 const jpeg = Buffer.from(user.jpegPhoto, 'binary')
 fs.writeFileSync("foto.jpeg", jpeg);

和这个:

var img64 = Buffer.from(user.jpegPhoto).toString('base64');
var foto = "<div><img src='data:image/jpeg;base64,"+img64+"'/></div>"
fs.appendFile('index.html', foto, function (err) {
  if (err) throw err;
     console.log('Saved!');
  });

这是所有 node.js 代码:

var basicAuth = require('basic-auth');
var LdapAuth = require('ldapauth-fork');
var http = require('http');
var fs = require('fs');
var qs = require('querystring');

var username = "MOCKUSERNAME";
var password = "MOCKPASSWORD";

server = http.createServer( function(req, res) {

    if (req.method == 'POST') {
        console.log("POST");
        var body = '';
        req.on('data', function (data) {
            body += data;
            //console.log(body);
        });
        req.on('end', function () {
            var data = qs.parse(body);
            var userDecode = Buffer.from(data.username, 'base64').toString('ascii');
            var passDecode = Buffer.from(data.password, 'base64').toString('ascii'); 

            res.setHeader('Access-Control-Allow-Origin', '*');
            res.writeHead(200, {'Content-Type':'image/jpeg'});

            if (data.username && data.password) {

                var options = {
                   url:                'XXXXXX',
                   bindDN:             'XXXXX',
                   bindCredentials:    'XXXXX',
                   searchBase:         'XXXXX',
           includeRaw: true,
                   searchFilter:       '(aoldapkey=*' + userDecode + ')'
                   //  reconnect: true
                }
                var ldap = new LdapAuth(options);
                ldap.authenticate(userDecode, passDecode, function(err, user) {
                   if (err) {
                        console.log("login Error: " + err);
                        res.write(JSON.stringify({ success : false, message :     'Authentication failed', serverError: err }));
                            res.end('');
                       } else if(!user.uid) {
                        console.log("user not found Error: " + err);
                        res.write(JSON.stringify({ success : false, message :         
    'Authentication failed, user not found', serverError: err }));
                            res.end();
                       } else if(user.uid) {
                          console.log("success : user "+ user.uid +" found ");
                          var userJsonObject = {
                              success : true,
                              user: {
                                  uid : user.uid,
                                  cn: user.cn,
                                  givenName: user.givenName,
                                  sn: user.sn,
                                  title: user.title,
                                  mobile: user.mobile,
                                  mail: user.mail,
                                  aoJobPosition: user.aoJobPosition,
                                  jpegPhoto: user.jpegPhoto
                              }
                          }
    //------------------------------dont see the image in index.html
                /*var img64 = Buffer.from(user.jpegPhoto).toString('base64');
                var foto = "<div><img src='data:image/jpeg;base64,"+img64+"'/>    
    </div>"
                fs.appendFile('index.html', foto, function (err) {
                  if (err) throw err;
                  console.log('Saved!');
                });*/
    //--------------------------------
                          res.write(JSON.stringify(userJsonObject);
                          res.end();
                       }
                    });
                } else {
                res.write(JSON.stringify({ success : false, message : 'You must     
    specify a valid username and password'}));
                    res.end();
                }
            });
        }
        else {
            var html = fs.readFileSync('index.html');
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(html);
        }
    });
    server.on('error', function(err) {
        console.log("Caught server error: ");
        console.log(err.stack);
    });

    port = 3000;
    host = '127.0.0.1';
    server.listen(port, host);
    console.log('Listening at http://' + host + ':' + port);

这是所有 node.js 代码,我在 node.js 中使用 ldapauth-fork 在 ldap 中获取用户信息,但是当我尝试获取 user.jpegPhoto 时,您无法显示此图像。

这是 index.html :

<div><img src='data:imag/*;base64, 77x73..........3vv70='/></div>

索引.html

4

0 回答 0