設定Configuration
HTTP駆動のアプリケーションはステートレスですから、リクエスト間に渡り情報を保存するセッションが提供されています。Laravelは美しく統一されたAPIで、様々なバックエンドのセッションを用意しています。人気のあるMemcachedやRedis、データベースも始めからサポートしています。Since HTTP driven applications are stateless, sessions provide a way to store information about the user across requests. Laravel ships with a variety of session back-ends available for use through a clean, unified API. Support for popular back-ends such as Memcached[http://memcached.org], Redis[http://redis.io], and databases is included out of the box.
セッションの設定はconfig/session.php
にあります。このファイルのオプションには詳しくコメントがついていますので、確認して下さい。ほとんどのアプリケーションでうまく動作できるように、Laravelはfile
セッションドライバーをデフォルトとして設定しています。The session configuration is stored in config/session.php
. Be sure to review the well documented options available to you in this file. By default, Laravel is configured to use the file
session driver, which will work well for the majority of applications.
Reidsセッションを使用する時には、Composerでpredis/predis
パッケージ(~1.0)をインストールしておく必要があります。Before using Redis sessions with Laravel, you will need to install the predis/predis
package (~1.0) via Composer.
注目: セッションに保存するデータを全て暗号化したい場合は、
encrypt
設定オプションをture
に設定します。Note: If you need all stored session data to be encrypted, set theencrypt
configuration option totrue
.
注意
cookie
セッションドライバーを使用する場合は、HTTPカーネルからEncryptCookie
ミドルウェアを決して削除してはいけません。このミドルウェアを削除してしまうと、リモートコードインジェクションの脆弱性をアプリケーションに入れてしまうでしょう。Note: When using thecookie
session driver, you should never remove theEncryptCookie
middleware from your HTTP kernel. If you remove this middleware, your application will be vulnerable to remote code injection.
予約キーReserved Keys
Laravelは内部で、flash
セッションキーを使用しています。そのため、この名前のセッションアイテムを追加しないでください。The Laravel framework uses the flash
session key internally, so you should not add an item to the session by that name.
セッションの使用Session Usage
HTTPリクエストのsession
メソッド、Session
ファサード、session
ヘルパ関数など、セッションに多くの手段でアクセス可能です。session
ヘルパを引数を指定せず実行すれば、セッションオブジェクト全体が取得できます。次のように使えます。The session may be accessed in several ways, via the HTTP request's session
method, the Session
facade, or the session
helper function. When the session
helper is called without arguments, it will return the entire session object. For example:
session()->regenerate();
セッションにアイテム保存Storing An Item In The Session
Session::put('key', 'value')
session(['key' => 'value']);
配列セッション値として保存Push A Value Onto An Array Session Value
Session::push('user.teams', 'developers');
セッションからアイテム取得Retrieving An Item From The Session
$value = Session::get('key');
$value = session('key');
アイテムかデフォルト値の取得Retrieving An Item Or Returning A Default Value
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'default'; });
アイテム取得後に削除Retrieving An Item And Forgetting It
$value = Session::pull('key', 'default');
セッションから全データ取得Retrieving All Data From The Session
$data = Session::all();
アイテムの存在確認Determining If An Item Exists In The Session
if (Session::has('users'))
{
//
}
セッションからアイテム削除Removing An Item From The Session
Session::forget('key');
セッションから全アイテム削除Removing All Items From The Session
Session::flush();
セッションIDの再生成Regenerating The Session ID
Session::regenerate();
フラッシュデーターFlash Data
次のリクエストの間だけアイテムを保存しておきたいこともあります。Session::flash
メソッドが使えます。Sometimes you may wish to store items in the session only for the next request. You may do so using the Session::flash
method:
Session::flash('key', 'value');
現在のフラッシュデーターの寿命を次のリクエストまで延長Reflashing The Current Flash Data For Another Request
Session::reflash();
指定したフラッシュデーターの寿命を延長Reflashing Only A Subset Of Flash Data
Session::keep(['username', 'email']);
データベースセッションDatabase Sessions
database
セッションを使用する場合、セッションに必要な項目を含んだテーブルを用意してください。以下にサンプルのSchema
宣言を紹介します。When using the database
session driver, you will need to setup a table to contain the session items. Below is an example Schema
declaration for the table:
Schema::create('sessions', function($table)
{
$table->string('id')->unique();
$table->text('payload');
$table->integer('last_activity');
});
もちろん、Artisanコマンドのsession:table
で、このマイグレーションを生成することも可能です!Of course, you may use the session:table
Artisan command to generate this migration for you!
php artisan session:table
composer dump-autoload
php artisan migrate
セッションドライバーSession Drivers
セッション「ドライバー」で、それぞれのリクエストのセッションデーターをどこに保存するかを定義します。Laravelでは、素晴らしいドライバーを始めから用意しています。The session "driver" defines where session data will be stored for each request. Laravel ships with several great drivers out of the box:
file
- セッションをstorage/framework/sessions
に保存します。file
- sessions will be stored instorage/framework/sessions
.cookie
- セッションをセキュアに暗号化されたクッキーに保存します。cookie
- sessions will be stored in secure, encrypted cookies.database
- セッションをアプリケーションで使用されるデータベースに保存します。database
- sessions will be stored in a database used by your application.memcached
/redis
- セッションを指定された、早いキャッシュベースの保存領域に保持します。memcached
/redis
- sessions will be stored in one of these fast, cached based stores.array
- セッションは、単にPHPの配列として保存されるだけです。リクエスト間で持続しません。array
- sessions will be stored in a simple PHP array and will not be persisted across requests.
注目: 配列(array)ドライバーは、通常ユニットテストを実行するため使用されます。そのため、そのため、セッションデーターは保持されません。Note: The array driver is typically used for running unit tests[/docs/{{version}}/testing], so no session data will be persisted.