使用
// 创建$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 数据持久化。
