它曾经工作过,而在我的其他应用程序上它可以工作,但是这个新的应用程序正在通过传递身份验证来开发它。
基本上它可能会弹出一个要求输入用户名和密码,但现在它没有
这是我的简单身份验证文件
{
"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
我做错了什么
答案 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;