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');