0

アプリで basicAuth ミドルウェアを使用していますが、動作します。

しかし、ルート関数では、ユーザーが認証に使用したログインを取得したいと考えています。req が私の要求変数であると仮定すると、これは req.remoteUser (および後で req.user) にあるはずでした。

ただし、現在は両方とも「true」に設定されています。app.use(app.router) を呼び出す前にミドルウェアが使用されていることを確認します。また、basicAuth の直後の行で bodyParser を使用すると、リクエストが正しく入力されます。

Google ではあまり問題はありませんが、express github で 1 つの問題だけが機能し、req.user と req.remoteUser の両方に値があることを示しています。

4

1 に答える 1

0

req.user を設定したい場合は、コールバック関数にユーザー名を提供する必要があります (呼び出し元のコードのコンテキストに明らかにユーザー名が含まれている場合でも)。

これを行う代わりに(私が従った素晴らしいチュートリアルが言ったように):

var express = require('express');
var app = express();

// Authenticator
app.use(express.basicAuth(function(user, pass, callback) {
 var result = (user === 'testUser' && pass === 'testPass');
 callback(null /* error */, result);
}));

app.get('/home', function(req, res) {
 res.send('Hello World');
});

app.listen(process.env.PORT || 8080);

関数を次のように変更する必要があります。

app.use(express.basicAuth(function(user, pass, callback) {
  if (user === 'testUser' && pass === 'testPass') {
    callback(null /* error */, user);
  } else {
    callback(null, null);
  }
}));

そして、疑問に思っている人にとっては、はい、それは、名前が空の文字列であるユーザーを持つことができないことを意味します (そうでない場合、express によって false と解釈されます)。

于 2013-10-17T16:19:16.817 に答える