symfony-クッキーとセッション管理

Symfony HttpFoundationコンポーネントは、オブジェクト指向の方法でCookieとセッションの管理を提供します。 Cookieクライアント側のデータストレージを提供し、少量のデータのみをサポートします。通常、ドメインあたり2KBで、ブラウザによって異なります。Sessionサーバー側のデータストレージを提供し、大量のデータをサポートします。SymfonyWebアプリケーションでCookieとセッションを作成する方法を見てみましょう。

クッキー

symfonyはCookieアイテムを作成するためのCookieクラスを提供します。価値のある24時間で期限切れになるCookieの色を作成しましょうblue。cookieクラスのコンストラクターパラメータは次のとおりです。

  • 名前(タイプ:文字列)-Cookie名
  • 値(タイプ:文字列)-Cookie値
  • 有効期限(タイプ:整数/文字列/日時)-有効期限情報
  • パス(タイプ:文字列)-Cookieが利用可能なサーバーパス
  • ドメイン(タイプ:文字列)–Cookieが利用可能なドメインアドレス
  • セキュア(タイプ:ブール値)-CookieをHTTPS接続で送信する必要があるかどうか
  • httpOnly(タイプ:ブール値)-CookieがHTTPプロトコルでのみ使用可能かどうか
use Symfony\Component\HttpFoundation\Cookie;  
$cookie = new Cookie('color', 'green', strtotime('tomorrow'), '/', 
   'somedomain.com', true, true);

symfonyは、次の文字列ベースのCookie作成オプションも提供します。

$cookie = Cookie::fromString('color = green; expires = Web, 4-May-2017 18:00:00 +0100; 
path=/; domain = somedomain.com; secure; httponly');

ここで、作成したCookieを次のようにhttp応答オブジェクトのヘッダーに添付する必要があります。

$response->headers->setCookie($cookie);

Cookieを取得するには、次のようにRequestオブジェクトを使用できます。

$cookie = $request->cookie->get('color');

ここに、 request->cookie タイプです PropertyBag PropertyBagメソッドを使用して操作できます。

セッション

Symfonyは、SessionInterfaceインターフェースを実装するSessionクラスを提供します。重要なセッションAPIは次のとおりです。

start −セッションを開始します。

Session $session = new Session(); 
$session->start();

invalidate −すべてのセッションデータをクリアし、セッションIDを再生成します。

set −キーを使用してセッションにデータを保存します。

$session->set('key', 'value');

セッション値には、単純な整数から複雑なオブジェクトまで、任意のデータを使用できます。

get −キーを使用してセッションからデータを取得します。

$val = $session->get('key');

remove −セッションからキーを削除します。

clear −セッションデータを削除します。

FlashBag

セッションは、と呼ばれる別の便利な機能を提供します FlashBag。これは、ページのリダイレクト中にのみデータを保持するセッション内の特別なコンテナです。httpリダイレクトで役立ちます。ページにリダイレクトする前に、データを通常のセッションコンテナの代わりにFlashBagに保存でき、保存されたデータは次のリクエスト(リダイレクトされたページ)で利用できるようになります。その後、データは自動的に無効になります。

$session->getFlashBag()->add('key', 'value');  
$session->getFlashBag()->get('key');