1. ホーム
  2. node.js

[解決済み] NodeとExpress 4によるHTTP基本認証

2022-04-28 10:01:29

質問

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();
    }
});

解決方法は?

のコードを使って、オリジナルの 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();
    }
});