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