Symfony-cookies-session-management

提供:Dev Guides
移動先:案内検索

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

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

クッキー

SymfonyはCookieクラスを提供してCookieアイテムを作成します。 クッキーの色を作成してみましょう。これは24時間で期限が切れ、値は blue です。 Cookieクラスのコンストラクターパラメーターは次のとおりです。

  • name(type:string)-クッキー名
  • 値(タイプ:文字列)-Cookie値
  • expire(タイプ:整数/文字列/日時)-有効期限情報
  • path(type:string)-Cookieが利用可能なサーバーパス
  • domain(type:string)– 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→ cookiePropertyBag タイプであり、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 と呼ばれる別の便利な機能を提供します。 これは、ページのリダイレクト中にのみデータを保持するセッション内の特別なコンテナです。 HTTPリダイレクトで役立ちます。 ページにリダイレクトする前に、データを通常のセッションコンテナの代わりにFlashBagに保存し、保存したデータを次のリクエスト(リダイレクトされたページ)で利用できるようにします。 その後、データは自動的に無効になります。

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