Laravel - Session
[ 基础配置 ]
Session 相关的配置文件存储在 config/session.php
。请务必查看此文件中对于你可用的选项。默认设置下,Laravel 的配置是使用文件作为 Session 驱动,大多数情况下能够运行良好。在生产环境下,你可以考虑使用 memcached
或 redis
驱动来达到更出色的性能表现。
Session 配置的 driver
的选项定义了每次请求的 Session 数据的存储位置。Laravel 附带了几个不错且可开箱即用的驱动:
file
将 Session 保存在 storage/framework/sessions
cookie
Session 保存在安全加密的 Cookie 中。
database
Session 保存在关系型数据库。
memcached/ redis
将 Sessions 保存在其中一个快速且基于缓存的存储系统中。
array
将 Sessions 保存在简单的 PHP 数组中,并只存在于本次请求.
数组驱动一般用于 测试 防止存储在 Session 的数据被持久化。
[ 获取单个Session ]
A - 通过请求实例来获取session
$value = $request->session()->get('key');
B - 全局 Session 辅助函数
// 获取 Session 中的一条数据...
$value = session('key');
// 指定一个默认值...
$value = session('key', 'default');
// 存储一条数据至 Session 中...
session(['key' => 'value']);
[ 获取全部 Session ]
//请求实例形式
$value = $request->session()->all();
//全局辅助函数形式
$value = session()->all();
[ Session是否存在 ]
//请求实例形式
if($request->session()->has('key')){
...
}
//全局辅助函数形式
if(session()->has('key')){
...
}
如果需要判断的 session , 值可能为 null的, 需要使用 exists
,而不是 has
//请求实例形式
if($request->session()->exists('key')){
...
}
//全局辅助函数形式
if(session()->exists('key')){
...
}
[ PUSH & PULL ]
// 指定一个默认值...
$value = session('key', 'default');
除了这个用法,还可以使用PUSH方法来,存入session
$request->session()->push('user.teams', 'developers');
这样对于存储数据session是相当方便的
而PULL方法,则会从 Session 中取出并删除数据
$value = $request->session()->pull('key', 'default');
[ 闪存session ]
使用 flash
方法。使用这个方法保存 session,只能将数据保留到下个 HTTP 请求,然后就会被自动删除。
$request->session()->flash('status', 'Task was successful!');
下一次的请求如果还需要这次得到的 闪存session, 可以使用 reflash
方法
$request->session()->reflash();
可以保留指定的session
$request->session()->keep(['username', 'email']);
[ 删除session ]
//清除单个session
$request->session()->forget('key');
//清除全部session
$request->session()->flush();
[ 自定义驱动 ]
这么高档不会,略过。