4

私はこのような高速ルートを持っています:

app.get('/', auth.authOrDie, function(req, res) {
    res.send();
});

ここで、authOrDie関数はそのように定義されています(私のauth.jsモジュールでは):

exports.authOrDie = function(req, res, next) {
    if (req.isAuthenticated()) {
        return next();
    } else {
        res.send(403);
    }
});

ここで、ユーザーが認証されていない場合、httpリクエストにAuthorization(Basic)ヘッダーがあるかどうかを確認したいと思います。そのために、優れた接続ミドルウェアbasicAuth()を使用したいと思います。

ご存知のように、ExpressはConnectの上に構築されているので、を使用できますexpress.basicAuth

basicAuthは一般的に次のように使用されます。

app.get('/', express.basicAuth(function(username, password) {
    // username && password verification...
}), function(req, res) {
    res.send();
});

しかし、私はそれを私のauthOrDie関数で次のように使用したいと思います:

exports.authOrDie = function(req, res, next) {
    if (req.isAuthenticated()) {
        return next();
    } else if {
        // express.basicAuth ??? ******
    } else {
        res.send(403);
    }
});

******適切なパラメーターを使用してbasicAuth関数を呼び出すにはどうすればよいですか(req?res?next?...)。

ありがとう。

4

1 に答える 1

8

関数を呼び出すと、呼び出すexpress.basicAuthミドルウェア関数が返されるため、次のように直接呼び出すことになります。

exports.authOrDie = function(req, res, next) {
    if (req.isAuthenticated()) {
        return next();
    } else {
        return express.basicAuth(function(username, password) {
            // username && password verification...
        })(req, res, next);
    }
});
于 2013-01-10T22:03:17.477 に答える