シナリオをあげよう。/auth を呼び出す AJAX 呼び出しがあります。そのページは、ユーザーが認証されているかどうかを確認し、いくつかのセッション変数を設定します (以下のコード)。
$session = $this->getRequest()->getSession();
$session->set('fbid', $fbid);
$session->set('name', $name);
// not sure if this is even needed - get the same with or without
//$session->save();
別のページに移動してそのセッションにアクセスしようとすると、空に戻ります。
これらのセッションを通常のページ (XMLHttpRequest/AJAX 経由でアクセスするページではない) に設定すると、正常に動作します。
のセッション設定は次のconfig.yml
とおりです。
session:
cookie_lifetime: 3600
cookie_httponly: false
問題があったのhttponly
ではないかと思いましたが、そうではありませんでした。
助言がありますか?何か不足していますか?
* アップデート *
セキュリティ/ファイアウォールの設定は次のとおりです。
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/demo/secured/login$
security: false
secured_area:
pattern: ^/demo/secured/
form_login:
check_path: /demo/secured/login_check
login_path: /demo/secured/login
logout:
path: /demo/secured/logout
target: /demo/
/auth
私はファイアウォールの設定をまったく変更していません。私が知る限り、 XMLHttpRequest 経由の呼び出しには影響していないはずです。
* アップデート 2 *
2セットの後に追加すること$session->shutdown()
になりました(そして、シャットダウンがセッションオブジェクトメソッドではないことはわかっています)。最終的にエラーになりましたが、そのため動作を開始し、実際には $_SESSION に保存されました。そのため、そのエラーで $_SESSION に保存する必要がある場合は、保存を強制する実際のメソッドが必要です。本当に奇妙..