W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
由于 HTTP 協(xié)定是無狀態(tài)(Stateless)的,所以 session 提供一種保存用戶數(shù)據(jù)的方法。Laravel 支持了多種 session 后端驅動,并通過清楚、統(tǒng)一的 API 提供使用。也內置支持如 Memcached、Redis 和數(shù)據(jù)庫的后端驅動。
session 的配置文件配置在 config/session.php
中,請務必看一下 session 配置文件中可用的選項配置及注釋。Laravel 默認使用 file
的 session 驅動,它在大多的應用中可以良好運作。
如果你想在 Laravel 中使用 Redis
sessions,你需要先通過 Composer 安裝 predis/predis
擴展包 (~1.0)。
注意: 如果你需要加密所有的 session 數(shù)據(jù),就將選項
encrypt
配置為true
。
注意: 當你使用
cookie
作為 session 驅動時, 你永遠不應該從 HTTP Kernel 中移除EncryptCookie
中間件。如果你移除了這個中間件,你的應用容易遭受遠程代碼攻擊。
Laravel 框架在內部有使用 flash
作為 session 的鍵值,所以應該避免 session 使用此名稱。
獲取 session 有很多種方式,可以通過 HTTP request 類的 session
方法,Session
facade 或者 session
輔助函數(shù)。如果在調用 session
輔助函數(shù)時沒有傳入?yún)?shù),會返回整個 session 對象。比如:
session()->regenerate();
Session::put('key', 'value');session(['key' => 'value']);
Session::push('user.teams', 'developers');
$value = Session::get('key');$value = session('key');
$value = Session::get('key', 'default');$value = Session::get('key', function() { return 'default'; });
$value = Session::pull('key', 'default');
$data = Session::all();
if (Session::has('users')){ //}
Session::forget('key');
Session::flush();
Session::regenerate();
有時你可能希望暫存一些數(shù)據(jù),并只在下次請求有效。你可以使用 Session::flash
方法來達成目的:
Session::flash('key', 'value');
Session::reflash();
Session::keep(['username', 'email']);
當使用 database
session 驅動時,你必需建置一張保存 session 的數(shù)據(jù)表。下方例子使用 Schema
來建表:
Schema::create('sessions', function($table){ $table->string('id')->unique(); $table->text('payload'); $table->integer('last_activity');});
當然你也可以使用 Artisan 命令 session:table
來建 migration 表:
php artisan session:table composer dump-autoload php artisan migrate
session 配置文件中的「driver」定義了 session 數(shù)據(jù)將以哪種方式被保存。Laravel 提供了許多良好的驅動:
file
- sessions 將保存在 storage/framework/sessions
。
cookie
- sessions 將安全保存在加密的 cookies 中。
database
- sessions 將保存在你的應用程序數(shù)據(jù)庫中。
memcached
/ redis
- sessions 將保存在一個高速緩存的系統(tǒng)中。
array
- sessions 將單純的以 PHP 數(shù)組保存,只存活在當次請求。
注意: array 驅動典型應用在 unit tests 環(huán)境下,所以不會留下任何 session 數(shù)據(jù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: