使用express / nodejs

时间:2017-11-03 02:58:28

标签: node.js express iisnode

我需要从HTTP request对象获取用于在Windows上运行的节点应用程序的用户信息。我知道有node-sspi npm包但是可以在不提示用户通过浏览器的本机登录提示窗口登录的情况下使用它吗?我尝试使用iisnode在IIS中托管节点应用程序,但登录提示只在IE中消失。理想情况下,我想要一个可以跨不同浏览器工作的解决方案。

这是我的iisnode web.config

<configuration>
  <system.webServer>
    <handlers>
      <add name="iisnode" path="hello.js" verb="*" modules="iisnode" />
    </handlers>
    <iisnode promoteServerVars="AUTH_USER,AUTH_TYPE" />
    <rewrite>
      <rules>
        <rule name="myapp">
          <match url="myapp/*" />
          <action type="Rewrite" url="hello.js" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

这是一个简单的快速网络服务器,提示用户在Chrome或Firefox浏览时登录

var express = require('express');

var app = express.createServer();

app.use(function (req, res, next) {
  var nodeSSPI = require('node-sspi')
  var nodeSSPIObj = new nodeSSPI({
    retrieveGroups: true,
    offerBasic: true
  })
  nodeSSPIObj.authenticate(req, res, function (err) {
    res.finished || next()
  })
});

app.get('/node/express/myapp/foo', function (req, res) {
  res.send('req.connection.user = ' + req.connection.user);
});

app.get('/node/express/myapp/bar', function (req, res) {
  res.send('req.headers = ' + JSON.stringify(req.headers));
});

app.listen(process.env.PORT);

0 个答案:

没有答案