Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 将节点sspi与express.js一起使用_Authentication - Fatal编程技术网

Authentication 将节点sspi与express.js一起使用

Authentication 将节点sspi与express.js一起使用,authentication,Authentication,给定包含的代码,我如何获得一个返回req.connection.user的函数,而不使用app.use等?完全糊涂了 我想在app.js中这样做。我尝试了十几种不同的方法,但我遇到了麻烦。谢谢 function GetUserName() { } --Sample code 'use strict'; var express = require('express'); var app = express(); var server = require('http').createServer

给定包含的代码,我如何获得一个返回req.connection.user的函数,而不使用app.use等?完全糊涂了

我想在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'));
});
函数GetUserName(){ } --示例代码 "严格使用",; var express=需要(“express”); var-app=express(); var server=require('http')。createServer(应用程序); 应用程序使用(功能(请求、恢复、下一步){ var nodeSSPI=require('node-sspi'); var nodeSSPIObj=新nodeSSPI({ retrieveGroups:true }); nodeSSPIObj.身份验证(请求、恢复、功能(错误){ res.finished | | next(); }); }); 应用程序使用(功能(请求、恢复、下一步){ var out='Hello'+req.connection.user+'!您属于以下组:
    ; if(请求连接用户组){ for(请求连接用户组中的变量i){ out+='
  • '+req.connection.userGroups[i]+'

  • \n'; } } out+='
'; res.send(out); }); //启动服务器 var port=process.env.port | 3000; 侦听(端口、函数(){ console.log('Express server在%s模式下侦听端口%d',端口,app.get('env'); });
这是不可能的。你也不需要。您会发现检查用户名很有趣的所有函数都会向其发送req对象

如果你想有一个单一的功能,在那里你做测试,你使用路由器的Express,你可以这样做

功能自定义验证(请求、恢复、下一步){
if(req.connection.user==='有效的\u用户名'){
next();
返回;
}否则{
资源状态(401)。发送({
消息:“访问被拒绝”
});
}
}
router.get('/',自定义身份验证,函数(req,res,next){
//将您的回复发送到这里
}
当有人请求
'/'
时,他们将首先被发送到
自定义身份验证
函数。当调用
下一步();
时,他们将被发送回 如果您的身份验证测试失败,您希望以某种方式处理它,在本例中,他们只会得到一个带有JSON消息的403


如果您不知道如何使用路由器以及它与app.js的连接情况,请查找
express generator
,它将为一个express项目设置一些管道,这是不可能的。您也不需要这样做。所有您感兴趣检查其用户名的函数都将向其发送req对象

如果你想有一个单一的功能,在那里你做测试,你使用路由器的Express,你可以这样做

功能自定义验证(请求、恢复、下一步){
if(req.connection.user==='有效的\u用户名'){
next();
返回;
}否则{
资源状态(401)。发送({
消息:“访问被拒绝”
});
}
}
router.get('/',自定义身份验证,函数(req,res,next){
//将您的回复发送到这里
}
当有人请求
'/'
时,他们将首先被发送到
自定义身份验证
函数。当调用
下一步();
时,他们将被发送回 如果您的身份验证测试失败,您希望以某种方式处理它,在本例中,他们只会得到一个带有JSON消息的403

如果您不知道如何使用路由器以及它与app.js的连接方式,请查看
express generator
,它将为express项目设置一些管道