使用
// 创建
$value = $request->session()->put('key', 'value');
session(['key' => 'value']);
// 获取
$value = $request->session()->get('key');
session('key');
// 获取并删除
$value = session()->pull('key', null);
// 删除
// forget 方法从 Session 中移除指定数据,如果你想要从 Session 中移除所有数据,可以使用 flush 方法:
$request->session()->forget('key');
$request->session()->flush();
开启
app/Http/Kernel.php
文件配置路由,示例以 api 路由说明:
api 路由组需要同时添加两个中间件,缺一不可:
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
中间件位置:
'api' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
// 'throttle:60,1',
'bindings',
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class
]
这个需要注意
EncryptCookies
、EncryptCookies
两个中间件放到 api 数组末尾,会不生效,具体没再深究。建议往前放或者放在非官方的中间件前面,以避免影响。
配置
Session 配置文件位于 config/session.php
。默认情况下,Laravel 使用的 Session 驱动为 file
驱动,这对许多应用而言是没有什么问题的。在生产环境中,你可能考虑使用 memcached
或者 redis
驱动以便获取更佳的 Session 性能,尤其是线上同一个应用部署到多台机器的时候,这是最佳实践。
Session 驱动用于定义请求的 Session 数据存放在哪里,Laravel 可以处理多种类型的驱动:
- file – Session 数据存储在
storage/framework/sessions
目录下; - cookie – Session 数据存储在经过安全加密的 Cookie 中;
- database – Session 数据存储在数据库中
- memcached / redis – Session 数据存储在 Memcached/Redis 缓存中,访问速度最快;
- array – Session 数据存储在简单 PHP 数组中,在多个请求之间是非持久化的。
注:数组驱动通常用于运行测试以避免 Session 数据持久化。