使用

  1. // 创建
  2. $value = $request->session()->put('key', 'value');
  3. session(['key' => 'value']);
  4. // 获取
  5. $value = $request->session()->get('key');
  6. session('key');
  7. // 获取并删除
  8. $value = session()->pull('key', null);
  9. // 删除
  10. // forget 方法从 Session 中移除指定数据,如果你想要从 Session 中移除所有数据,可以使用 flush 方法:
  11. $request->session()->forget('key');
  12. $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
]

这个需要注意 EncryptCookiesEncryptCookies 两个中间件放到 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 数据持久化。

参考信息