配置

Session 的配置文件存储在 config/session.php 文件中。请务必查看此文件中对于你而言可用的选项。默认情况下,Laravel 为绝大多数应用程序配置的 Session 驱动为 file 。在生产环境中,你可以考虑使用 memcached 或 redis 驱动,让 Session 的性能更加出色。

Session driver 的配置预设了每个请求存储 Session 数据的位置。Laravel 自带了几个不错而且开箱即用的驱动:

  • file - 将 Session 存储在 storage/framework/sessions 中。
  • cookie - Sessions 被存储在安全加密的 cookie 中。
  • database - Sessions 被存储在关系型数据库中。
  • memcached / redis - Sessions 被存储在基于高速缓存的存储系统中。
  • array - Sessions 存储在 PHP 数组中,但不会被持久化。

    使用 Session

    获取数据

    Laravel 中处理 Session 数据有两种主要方法:全局辅助函数 session 和通过一个 Request 实例。首先,我们来看看通过控制器方法类型提示一个 Request 实例来访问 session ```php <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request;

class UserController extends Controller { /**

  1. * 展示指定用户的简介
  2. *
  3. * @param Request $request
  4. * @param int $id
  5. * @return Response
  6. */
  7. public function show(Request $request, $id)
  8. {
  9. $value = $request->session()->get('key');
  10. //
  11. }

}

<a name="dhMjQ"></a>
#### 获取所有 Session 数据
如果你想获取 session 中的所有数据,可以使用 all 方法:
```php
$data = $request->session()->all();

判断 Session 中是否存在某个值

要确定 Session 中是否存在某个值,可以使用 has 方法。如果该值存在且不为 null,那么 has 方法会返回 true:

if ($request->session()->has('users')) {
    //
}

存储数据

想要存储数据到 Session,你可以使用 put 方法,或者使用辅助函数 session:

$request->session()->put('key', 'value');

删除数据

forget 方法会从 Session 中删除指定数据,如果想从 Session 中删除所有数据,可以使用 flush 方法:

// 删除单个值...
$request->session()->forget('key');
// 删除多个值...
$request->session()->forget(['key1', 'key2']);
// 全删
$request->session()->flush();

此外 : Illuminate\Support\Facades\Session; 也可以操纵session,方法同上