express.basicAuth抛出错误

我刚刚使用express basic auth在nodejs中创build了基本身份validation

var express = require('express'); var app = express(); // Authenticator app.use(express.basicAuth('testuser','testpassword')); app.get('/home', function(req, res) { res.send('Hello World'); }); app.listen(process.env.PORT || 8080); 

我得到了以下错误。 我不知道我哪里错了。

 app.use(express.basicAuth('testuser','testpassword')); ^ TypeError: Object function createApplication() { var app = function(req, res, next) { app.handle(req, res, next); }; mixin(app, proto); mixin(app, EventEmitter.prototype); app.request = { __proto__: req, app: app }; app.response = { __proto__: res, app: app }; app.init(); return app; } has no method 'basicAuth' at Object.<anonymous> (E:\node_modules\npm\login\app.js:5:17) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:902:3 

我很新的nodejs的东西。 任何帮助将认真感激

正如评论中所提到的,Express 4不再提供中间件,您可以直接从快速回购中复制实施,也可以使用与此类似的解决scheme:

 var express = require('express'); var app = express(); // Authenticator app.use(function(req, res, next) { var auth; // check whether an autorization header was send if (req.headers.authorization) { // only accepting basic auth, so: // * cut the starting "Basic " from the header // * decode the base64 encoded username:password // * split the string at the colon // -> should result in an array auth = new Buffer(req.headers.authorization.substring(6), 'base64').toString().split(':'); } // checks if: // * auth array exists // * first value matches the expected user // * second value the expected password if (!auth || auth[0] !== 'testuser' || auth[1] !== 'testpassword') { // any of the tests failed // send an Basic Auth request (HTTP Code: 401 Unauthorized) res.statusCode = 401; // MyRealmName can be changed to anything, will be prompted to the user res.setHeader('WWW-Authenticate', 'Basic realm="MyRealmName"'); // this will displayed in the browser when authorization is cancelled res.end('Unauthorized'); } else { // continue with processing, user was authenticated next(); } }); app.get('/home', function(req, res) { res.send('Hello World'); }); app.listen(process.env.PORT || 8080);