2016-11-09 7 views
1

Учитывая, что код включен, как бы я мог получить функцию, которая возвращает req.connection.user без использования app.use и т. Д.? Полностью смущен!using node-sspi with express.js

Я хочу сделать это в app.js. Я пробовал дюжину разных способов, но я ударяю о стену. Thanks

function GetUserName() { 
} 

--Sample code 
'use strict'; 

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
app.use(function (req, res, next) { 
    var nodeSSPI = require('node-sspi'); 
    var nodeSSPIObj = new nodeSSPI({ 
    retrieveGroups: true 
    }); 
    nodeSSPIObj.authenticate(req, res, function(err){ 
    res.finished || next(); 
    }); 
}); 
app.use(function (req, res, next) { 
    var out = 'Hello ' + req.connection.user + '! You belong to following groups:<br/><ul>'; 
    if (req.connection.userGroups) { 
    for (var i in req.connection.userGroups) { 
     out += '<li>'+ req.connection.userGroups[i] + '</li><br/>\n'; 
    } 
    } 
    out += '</ul>'; 
    res.send(out); 
}); 
// Start server 
var port = process.env.PORT || 3000; 
server.listen(port, function() { 
    console.log('Express server listening on port %d in %s mode', port, app.get('env')); 
}); 

ответ

0

Это невозможно. Вам также не нужно. Все функции, в которых вам было бы интересно проверить их имя пользователя, будут иметь объект req, отправленный ему.

Если вы хотите иметь одну функцию, где вы делаете тест, и вы используете Express, с маршрутизатором Вы можете сделать это, как это

function custom_auth(req, res, next) { 
    if (req.connection.user === 'valid_username') { 
     next(); 
     return; 
    } else { 
     res.status(401).send({ 
      message: 'Access denied' 
     }); 
    } 
} 

router.get('/', custom_auth, function(req, res, next) { 
    // Send your response here 
} 

Когда кто-то делает запрос на '/' они сначала будут отправлены функция custom_auth. Когда вызывается next();, они будут отправлены обратно на на функцию маршрутизации. Если ваш тест проверки подлинности завершился неудачно, вы хотите каким-то образом обработать это, в этом примере они просто получают сообщение 403 с сообщением JSON.

Если вы не знаете, как использовать маршрутизатор, и как это выглядит, как привязан к app.js, посмотреть express-generator, который настроит некоторую сантехнику для проекта Экспресс