首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在express.js中使用node-sspi

在express.js中使用node-sspi
EN

Stack Overflow用户
提问于 2016-11-10 06:59:19
回答 1查看 2.3K关注 0票数 1

给出包含的代码,我该如何获得一个不使用app.use而返回req.connection.user的函数呢?完全迷惑了!

我想用app.js来做这件事。我试过十几种不同的方法,但还是碰壁了。谢谢

代码语言:javascript
复制
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'));
});
EN

回答 1

Stack Overflow用户

发布于 2017-08-25 17:17:04

这不可能。你也不需要这样做。您会发现检查其用户名很有趣的所有函数都将向其发送请求对象。

如果您想要有一个执行测试的单一功能,并且将Express与路由器一起使用,您可以这样做

代码语言:javascript
复制
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项目设置一些管道

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40517422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档