0

コントローラーで有効期限が 5 分のセッションを設定する必要があります。どうすればいいのですか?次のようなものが必要です:

$this->container->get('session')->set('mysession', 'value', 'expiration');

symfony2の方法で?

ありがとう!

4

3 に答える 3

4

セッションがすでに作成されていると仮定すると、次の方法で目標を達成できます。

$this->container->get('session')->migrate($destroy = false, $lifetime = null);

$destroy: 古いセッションを削除するか、ガベージ コレクションに任せるか。

$lifetime: セッション Cookie の Cookie の有効期間を設定します。null 値はシステム設定を変更しないままにし、0 は Cookie をブラウザー セッションで期限切れにするように設定します。時間は秒単位であり、Unix タイムスタンプではありません。

于 2012-05-16T09:08:45.477 に答える
3

この機能は最近追加されました。このコミットまたはパッチに更新できます。コードから、次の方法で有効期限を設定できるようです。

$this->container->get('session')->getMetadataBag()->stampNew(300);
于 2012-04-26T13:28:34.513 に答える
1

アクティブなセッションの時間 (およびアイドル時間も) を制御するには、コントローラーで次のように行う必要があります (抜粋:公式ドキュメントのセッション構成):

$session->start();
if (time() - $session->getMetadataBag()->getCreated() > $maxTime) {
  $session->invalidate();
  throw new SessionExpired(); // redirect to expired session page
}

時間が $maxTime に達すると、セッションは「閉じられます」。このコードをアプリのバックエンドに関数として配置して、さまざまなメソッドから呼び出して時間を制御できます。

于 2012-12-11T11:43:20.453 に答える