コントローラーで有効期限が 5 分のセッションを設定する必要があります。どうすればいいのですか?次のようなものが必要です:
$this->container->get('session')->set('mysession', 'value', 'expiration');
symfony2の方法で?
ありがとう!
コントローラーで有効期限が 5 分のセッションを設定する必要があります。どうすればいいのですか?次のようなものが必要です:
$this->container->get('session')->set('mysession', 'value', 'expiration');
symfony2の方法で?
ありがとう!
セッションがすでに作成されていると仮定すると、次の方法で目標を達成できます。
$this->container->get('session')->migrate($destroy = false, $lifetime = null);
$destroy
: 古いセッションを削除するか、ガベージ コレクションに任せるか。
$lifetime
: セッション Cookie の Cookie の有効期間を設定します。null 値はシステム設定を変更しないままにし、0 は Cookie をブラウザー セッションで期限切れにするように設定します。時間は秒単位であり、Unix タイムスタンプではありません。
この機能は最近追加されました。このコミットまたはパッチに更新できます。コードから、次の方法で有効期限を設定できるようです。
$this->container->get('session')->getMetadataBag()->stampNew(300);
アクティブなセッションの時間 (およびアイドル時間も) を制御するには、コントローラーで次のように行う必要があります (抜粋:公式ドキュメントのセッション構成):
$session->start();
if (time() - $session->getMetadataBag()->getCreated() > $maxTime) {
$session->invalidate();
throw new SessionExpired(); // redirect to expired session page
}
時間が $maxTime に達すると、セッションは「閉じられます」。このコードをアプリのバックエンドに関数として配置して、さまざまなメソッドから呼び出して時間を制御できます。