一尘不染

使用Node and Express 4的基本HTTP身份验证

node.js

用Express v3实现基本的HTTP身份验证似乎很简单:

app.use(express.basicAuth('username', 'password'));

不过,第4版(我使用的是4.2)删除了basicAuth中间件,所以我有点卡住了。我有以下代码,但是它不会导致浏览器提示用户输入凭据,这就是我想要的(以及我想象的旧方法所做的):

app.use(function(req, res, next) {
    var user = auth(req);

    if (user === undefined || user['name'] !== 'username' || user['pass'] !== 'password') {
        res.writeHead(401, 'Access invalid for user', {'Content-Type' : 'text/plain'});
        res.end('Invalid credentials');
    } else {
        next();
    }
});

阅读 237

收藏
2020-07-07

共1个答案

一尘不染

我使用原始代码basicAuth查找答案:

app.use(function(req, res, next) {
    var user = auth(req);

    if (user === undefined || user['name'] !== 'username' || user['pass'] !== 'password') {
        res.statusCode = 401;
        res.setHeader('WWW-Authenticate', 'Basic realm="MyRealmName"');
        res.end('Unauthorized');
    } else {
        next();
    }
});
2020-07-07