菜单
本页目录

session

配置

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
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * 展示指定用户的简介
     *
     * @param  Request  $request
     * @param  int  $id
     * @return Response
     */
    public function show(Request $request, $id)
    {
        $value = $request->session()->get('key');

        //
    }
}

获取所有 Session 数据

如果你想获取 session 中的所有数据,可以使用 all 方法:

$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,方法同上