给出包含的代码,我该如何获得一个不使用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'));
});发布于 2017-08-25 17:17:04
这不可能。你也不需要这样做。您会发现检查其用户名很有趣的所有函数都将向其发送请求对象。
如果您想要有一个执行测试的单一功能,并且将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项目设置一些管道
https://stackoverflow.com/questions/40517422
复制相似问题