鉴于包含的代码,如何在不使用app.use等的情况下获取返回req.connection.user的函数?完全糊涂了!
我想在app.js中这样做我已经尝试了十几种不同的方式,但我正在撞墙。感谢
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 :(得分: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();
被调用时,它们将被发送回去
路由功能。如果您的身份验证测试失败,您希望以某种方式处理它,在此示例中,他们只获得带有JSON消息的403。
如果您不知道如何使用路由器以及它与app.js的关系,请查看express-generator
,这将为Express项目设置一些管道