0

私は使用しています

app.use(require('./middleware/im')({
   maxAge: 30 * 1000,
   reapInterval: 20 * 1000,
   authentication: require('./libs/authentication/' + AUTH_LIBRARY)
}));

私のnode.js/express.jsでユーザー(Cookieベース)を認証します。今私の問題は、ユーザーを認証できるように、クライアント側(PHP + JavaScript)サーバーがGET(jsonp)を介してノードサーバーにCookie値を送信する必要があることです。しかし、もしそうなら:

app.get('/cookie', function(){//set cookie here});

アクションを呼び出す前にミドルウェアの認証コードが起動するため、機能しません。ミドルウェアが起動する前に、Cookie (または任意の文字列) を node.js サーバーに送信するにはどうすればよいですか? それが不可能な場合、node.js サーバーがユーザーのユーザー ID を取得できるようにする別の方法はありますか?

ありがとうございました。

4

1 に答える 1

2

リクエストをインターセプトするには、リクエストに'.middleware/im'到達する前に独自のミドルウェアを作成する必要があります。これは驚くほど簡単です (以下は への呼び出しの前に記述されていますapp.use(require('./middleware/im')({ ...)。

app.use(cookieDetect);
function cookieDetect (request, response, next) {
    if (request.url === "/cookie") {
        // do your stuff here
    } else {
        next(); // keep the middleware chain going
    }
}

ところで、JavaScript の構文上の注意として、関数宣言 ( とは異なりますvar myFunc = function () { ...) を使用すると、「スコープ ホイスト」が発生します。その特定の関数宣言は、コードに表示される場所からではなく、そのスコープ レベルの実行の最初で使用できます。 . これが、コードに表示さapp.useれるにできる理由です。

于 2013-10-02T16:10:08.277 に答える