Javascript 如何使用express ntlm获取windows用户名而不使用NODE.js进行身份验证?

Javascript 如何使用express ntlm获取windows用户名而不使用NODE.js进行身份验证?,javascript,node.js,express,express-ntlm,Javascript,Node.js,Express,Express Ntlm,我正在尝试使用express ntlm获取windows用户名而不进行身份验证 在我的app.js中,我添加了以下内容: var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.j

我正在尝试使用express ntlm获取windows用户名而不进行身份验证

在我的app.js中,我添加了以下内容:

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
var ntlm = require('express-ntlm'); 
app.use(ntlm()); 
app.use('/search', search);
这给了我加载node.js时的401错误 在chrome控制台中:未能加载资源: 未能加载资源:net::ERR\u意外

这里的正确布线顺序是什么? 谢谢

==========修改为==============

var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var TT = require('./routes/TT');
var KYEC_stat = require('./routes/KYEC_stat');
var ftc = require('./routes/ftc');
var volPerDevice = require('./routes/topVolPerDevice');
var search = require('./routes/search');

var ntlm = require('express-ntlm'); 
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use(ntlm()); 
app.use('/search', search);
app.use('/tt', TT);
app.use('/kyec', KYEC_stat);
app.use('/ftc', ftc);
app.use('/vol', volPerDevice);
app.use('/', routes);

/// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});
var config = require('../config.json');
var express = require('express');
var query = require('pg-query');
var assert = require('assert');
var async = require('async');
var url = require('url');
var queryString = require('querystring');

var router = express.Router();


/* Display quantity tested per device id since 2011 using d3 */
/* The query will first select all lot records and their earliest test date (which is the 'P' insertion incoming material quantity);
   then use {lotid, lotstartdate} to retrieve all 1st insertion lot records, then add up lots per device;
   then return the 1st 20 device id which tops inocming material quantity;
 */
router.get('/', function(req, res) {
        query.connectionParameters = config.reportConnStr;      //connecting to localhost
        var deviceArray = new Array();
        var sqlstr =  "sdfsfdfsdsfds";
        query(sqlstr, function(err, rows, result) {
            assert.equal(rows, result.rows);
            for (var i = 0; i < rows.length; i++) {
                var device = {};
                device.name = rows[i].device;
                device.value = rows[i].totalqtyout;
                deviceArray.push(device);        
            }
            res.render('d3t1', {deviceArray:deviceArray});                      
        });
});

module.exports = router;
=======topVolPerDevice.js================

var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var TT = require('./routes/TT');
var KYEC_stat = require('./routes/KYEC_stat');
var ftc = require('./routes/ftc');
var volPerDevice = require('./routes/topVolPerDevice');
var search = require('./routes/search');

var ntlm = require('express-ntlm'); 
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use(ntlm()); 
app.use('/search', search);
app.use('/tt', TT);
app.use('/kyec', KYEC_stat);
app.use('/ftc', ftc);
app.use('/vol', volPerDevice);
app.use('/', routes);

/// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});
var config = require('../config.json');
var express = require('express');
var query = require('pg-query');
var assert = require('assert');
var async = require('async');
var url = require('url');
var queryString = require('querystring');

var router = express.Router();


/* Display quantity tested per device id since 2011 using d3 */
/* The query will first select all lot records and their earliest test date (which is the 'P' insertion incoming material quantity);
   then use {lotid, lotstartdate} to retrieve all 1st insertion lot records, then add up lots per device;
   then return the 1st 20 device id which tops inocming material quantity;
 */
router.get('/', function(req, res) {
        query.connectionParameters = config.reportConnStr;      //connecting to localhost
        var deviceArray = new Array();
        var sqlstr =  "sdfsfdfsdsfds";
        query(sqlstr, function(err, rows, result) {
            assert.equal(rows, result.rows);
            for (var i = 0; i < rows.length; i++) {
                var device = {};
                device.name = rows[i].device;
                device.value = rows[i].totalqtyout;
                deviceArray.push(device);        
            }
            res.render('d3t1', {deviceArray:deviceArray});                      
        });
});

module.exports = router;
在这里,我的request.connection.ntlm为空

这里的原因是什么?是关于浏览器设置还是我的网络设置

我在公司网络上运行这个,我在一个网络域上


更新:

在app.js中对此进行更改:

app.use(ntlm()); 
app.use('/', search);
app.use('/', TT);
app.use('/', KYEC_stat);
app.use('/', ftc);
app.use('/', volPerDevice);
app.use('/', routes);
并在topVolPerDevice文件的路由器中添加“/vol”:

var config = require('../config.json');
var express = require('express');
var query = require('pg-query');
var assert = require('assert');
var async = require('async');
var url = require('url');
var queryString = require('querystring');

var router = express.Router();


/* Display quantity tested per device id since 2011 using d3 */
/* The query will first select all lot records and their earliest test date (which is the 'P' insertion incoming material quantity);
   then use {lotid, lotstartdate} to retrieve all 1st insertion lot records, then add up lots per device;
   then return the 1st 20 device id which tops inocming material quantity;
 */
router.get('/vol', function(req, res) {
        query.connectionParameters = config.reportConnStr;      //connecting to localhost
        var deviceArray = new Array();
        var sqlstr =  "sdfsfdfsdsfds";
        query(sqlstr, function(err, rows, result) {
            assert.equal(rows, result.rows);
            for (var i = 0; i < rows.length; i++) {
                var device = {};
                device.name = rows[i].device;
                device.value = rows[i].totalqtyout;
                deviceArray.push(device);        
            }
            res.render('d3t1', {deviceArray:deviceArray});                      
        });
});

module.exports = router;
var config=require('../config.json');
var express=需要(“express”);
var query=require('pg-query');
var assert=require('assert');
var async=require('async');
var url=require('url');
var queryString=require('queryString');
var router=express.router();
/*显示自2011年以来使用d3测试的每个设备id的数量*/
/*查询将首先选择所有批次记录及其最早测试日期(即“P”插入来料数量);
然后使用{lotid,lotstartdate}检索所有第一次插入批次记录,然后为每个设备添加批次;
然后返回前20个设备id,该id位于inocming物料数量的顶部;
*/
路由器.get('/vol',函数(req,res){
query.connectionParameters=config.reportConnStr;//连接到本地主机
var deviceArray=新数组();
var sqlstr=“sdfsfds”;
查询(sqlstr、函数(错误、行、结果){
assert.equal(行,result.rows);
对于(变量i=0;i
谢谢,熊先生和比尔先生。我用推荐的编辑重新发布了我的问题,但是,它仍然显示GET/search 401 5ms有什么想法吗?你能给我看一下一个路由文件的代码吗?再次感谢Bearandbeer先生。我用我的路线JavaScript重新发布。@sqr你能与github共享所有应用程序吗?或发送到我的电子邮件吗?@sqr查看我的更新答案。。我尝试更新问题而不是我的答案,抱歉..在原始问题中更新。实际上,
request.connection.ntlm
为空没有问题。这是为了检查连接是否已通过身份验证。您可以尝试此基本设置吗<代码>var express=require('express')、ntlm=require('express-ntlm');var-app=express();应用程序使用(ntlm());app.all('*',函数(请求,响应){response.end(JSON.stringify(request.ntlm));};app.listen(80)嗨@Fabio,我试过了。它不会到达app.all()部分。代码将执行以处理_type1(…)=>connect_to_proxy(…)=>proxy.negotiate(…),然后转到connect_to_proxy(…)的回调,该回调只会将状态代码设置为401并结束响应。这是某个地方的故障信号吗?