0

node.js で書かれたサーバーがあります。パスポートを使用してユーザーをログインさせます。私もexpress.cookieSessionを使用しています。

私にはいくつかのクライアントがあり、それぞれに独自のフォルダーがあります(各クライアントにアプリのいくつかのコピーをサーバーすることを想定しています)。私のアプリの各コピーは次のようにアクセスされます:

www.mysite.com/client1/... www.mysite.com/client2/...

これは私のサーバーコードです:

app.configure(function() {
app.use(express.compress());
app.use(express.logger({format: 'dev'}));
app.use(basic.middleware);
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'app'), { maxAge: oneYear}));
app.use(express.cookieSession(
    {
        secret: process.env.COOKIE_SECRET || "cantbedecrypted",
        cookie: { maxAge: 1000*60*60 }
    }));
});

私の目標は、この「client1」または「client2」に従って、セッション Cookie を保存して、req.log を実行したときにその特定の Cookie が入力されるようにすることです。

私は req.login 関数でこれを行いましたが、問題は、ユーザーがサイトに入るたびに、最初にパス '/' でセッション Cookie を作成し、ユーザーがログインした後に別のセッション Cookie を作成することですが、今回は必要なパス: '/client1/.

これは、ログイン時にセッション Cookie を保存するコードです。

req.session.cookie.path = '/' + clientName;

問題は、req.logout() を実行すると、破棄されるセッション cookie がデフォルトのパス '/' にあるため、ユーザーがログインしたままになることです。

デフォルトの「/」ではなく「/client1/」にのみ保存されるように、初期セッション Cookie を作成する前に req.url をチェックするミドルウェアを挿入することは可能ですか?.

骸骨だけ欲しい。app.use express.cookieSession の直後に、このようなことを試しました

app.use(function (req, res, next) {
check url...
req.session.cookie.path = **desired path
}

しかし、これはうまくいきませんでした。

Express.cookieSession 内でいくつかのパラメーターまたはグローバル変数を使用する方法はありますか? これは私の問題を解決する可能性があります。

4

1 に答える 1