Appfog で Yii アプリを実行しています。複数のインスタンスを使用しようとすると、サインインしたままにすることができなくなります。
複数のインスタンスにはセッション用の共有ストレージが必要であることを知っており、EDMSHttpSession を使用してそれを実装しました。つまり、サインインしてApacheを再起動し、サインインしたままにすることができます。また、データベースのセッションレコードを削除すると、サインアウトします。これは、PHP がセッションを保存するためにデータベースを使用していると結論付けます。
セッション用の共有ストレージが Appfog で機能しない理由がわかりません。これをデバッグする方法について提案をお願いします。
その他の背景情報:
- 自動ログインにはクッキーを使用しています。それらは30日間有効である必要があります(Chromeインスペクターによると)が、数時間以上機能することはありません(ブラウザーセッションだと思います)-localhostでもAppfogでもありません。
- 複数のインスタンスと自動ログインを有効にすると (つまり、「remember me」をクリックします)、通常は 2 ~ 3 回のページ更新後にランダムに追い出されます。私が理解しているように、Cookie はサーバー セッションに関係なく自動的にサインインする必要がありますか?
- Appfog には SSL エンドポイントがありますが、localhost にはありません。
- Appfog の共有セッション ストレージが新しいセッションを取得していることを確認しました (データベース テーブルを調べます)。
アップデート:
私はいくつかのテストを行いましたが、おそらく私の結果は誰かにとって意味のあるものになるでしょう。
すべての Cookie を消去し、Appfog アプリを再起動します。サインインして、「Remember me」にチェックを入れます。現在、次の応答 Set-cookie ヘッダーは次のとおりです。
Set-Cookie:PHPSESSID=vrfoi0o15v3qps2644uqtvkfa1; path=/
Set-Cookie:PHPSESSID=db38s1k1vp5ngll837ac0vh0u7; path=/
Set-Cookie:73dfaf673b71b1f92d34b8ab63dab17b=812bbcfd4f5b3be91f8c85d39c3b37bb93e4c6b8a%3A4%3A%7Bi%3A0%3Bs%3A24%3A%225087ea0b3145a75545000000%22%3Bi%3A1%3Bs%3A22%3A%22demo%40playbackenergy.se%22%3Bi%3A2%3Bi%3A2592000%3Bi%3A3%3Ba%3A0%3A%7B%7D%7D; expires=Sun, 09-Jun-2013 08:32:24 GMT; path=/
後続のリクエストでは、リクエスト Cookie ヘッダーは次のとおりです。
Cookie:PHPSESSID=db38s1k1vp5ngll837ac0vh0u7; 73dfaf673b71b1f92d34b8ab63dab17b=812bbcfd4f5b3be91f8c85d39c3b37bb93e4c6b8a%3A4%3A%7Bi%3A0%3Bs%3A24%3A%225087ea0b3145a75545000000%22%3Bi%3A1%3Bs%3A22%3A%22demo%40playbackenergy.se%22%3Bi%3A2%3Bi%3A2592000%3Bi%3A3%3Ba%3A0%3A%7B%7D%7D
"db38s1k1vp5ngll837ac0vh0u7"
データベースで自分のセッションを見つけるために使用します。その行は次のようになります (vrfoi0o15v3qps2644uqtvkfa1
データベースには見つからないことに注意してください)。
{
"_id" : ObjectId("518cb0981045979e06000000"),
"data" : "73dfaf673b71b1f92d34b8ab63dab17b__id|s:24:\"5087ea0b3145a75545000000\";73dfaf673b71b1f92d34b8ab63dab17b__name|s:22:\"demo@playbackenergy.se\";73dfaf673b71b1f92d34b8ab63dab17b__states|a:0:{}73dfaf673b71b1f92d34b8ab63dab17brole|s:4:\"demo\";",
"expire" : 1368176186,
"id" : "db38s1k1vp5ngll837ac0vh0u7"
}
Appfog アプリを再起動して、アプリ内の別のページに移動しようとすると、サインアウトされます。
ログインページへのリダイレクト前のリクエスト Cookie ヘッダーは (以前と同じ):
Cookie:PHPSESSID=db38s1k1vp5ngll837ac0vh0u7; 73dfaf673b71b1f92d34b8ab63dab17b=812bbcfd4f5b3be91f8c85d39c3b37bb93e4c6b8a%3A4%3A%7Bi%3A0%3Bs%3A24%3A%225087ea0b3145a75545000000%22%3Bi%3A1%3Bs%3A22%3A%22demo%40playbackenergy.se%22%3Bi%3A2%3Bi%3A2592000%3Bi%3A3%3Ba%3A0%3A%7B%7D%7D