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 内でいくつかのパラメーターまたはグローバル変数を使用する方法はありますか? これは私の問題を解決する可能性があります。