通过我的简单身份验证中间件快递

时间:2016-12-23 08:34:38

标签: node.js express

它曾经工作过,而在我的其他应用程序上它可以工作,但是这个新的应用程序正在通过传递身份验证来开发它。

基本上它可能会弹出一个要求输入用户名和密码,但现在它没有

这是我的简单身份验证文件

  {
    "revision": {
        "version": 109
    },
     "snippet": {
        "parentGroupId": "root",
       "processGroups":["d3ea576e-d474-4edd-8b11-43071bcaf252"]

    }
}

现在这就是我使用它的方式,

 var basicAuth = require('basic-auth');

/**
 * Simple basic auth middleware for use with Express 4.x.
 *
 * @example
 * app.use('/api-requiring-auth', utils.basicAuth('username', 'password'));
 *
 * @param   {string}   username Expected username
 * @param   {string}   password Expected password
 * @returns {function} Express 4 middleware requiring the given credentials
 */
exports.basicAuth = function(username, password) {
    return function(req, res, next) {
        var user = basicAuth(req);

        if (!user || user.name !== username || user.pass !== password) {
            res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
            return res.send(401);

        }

        next();
    };
};

这是我的var utils = require('./auth'); // my simple auth file var user = require('./routes/user'); app.use('/user', user, utils.basicAuth(config.user['username'], config.user['password']));

./routes/user

我做错了什么

2 个答案:

答案 0 :(得分:0)

user将在utils.basicAuth执行之前返回请求。

尝试将app.use('/user',...更改为:

app.use('/user',utils.basicAuth(config.user['username'], config.user['password']),user);

以下示例说明了您的问题。

app.get('/example', function (req, res, next) {
  res.send('First');
}, function (req, res) {
  // This will not be executed since the request was returned in the first handler 
  res.send('Second')
})

这里执行第二个处理程序:

app.get('/middlewarePath', function (req, res, next) {
  console.log("Do something awesome here");
  next();
}, function (req, res) {
  // Now second is returned. 
  res.send('Second')
})

答案 1 :(得分:0)

对于仍然存在basic-auth库问题的任何人,我错过了默认路径"/",它只是要求登录凭据,然后将它重定向到请求的页面,否则它会阻止你,如果登录是不正确。

这是我的默认索引路由文件。

var express = require('express');
var router = express.Router();

/* GET index page. */
router.get('/', function(req, res, next) {
  if (req.get('Authorization') !== undefined) {
    res.redirect('/vm'); //path vm is my main home page
  }
  res.render('index');
});

module.exports = router;