会话服务

Configuration

由于 HTTP 驱动的应用程序是无状态的,因此会话提供了一种跨请求存储有关用户信息的方法。 Winter 附带了多种会话后端,可通过干净、统一的 API 使用。支持流行的后端,例如Memcached,Redis,并且数据库是开箱即用的。

会话配置存储在config/session.php.请务必查看此文件中提供给您的详细记录的选项。默认情况下,Winter 配置为使用file 会话驱动程序,它适用于大多数应用程序。

- `file` - sessions are stored in `storage/framework/sessions`. - `cookie` - sessions are stored in secure, encrypted cookies. - `database` - sessions are stored in a database used by your application. - `memcached` / `redis` - sessions are stored in one of these fast, cache based stores. - `array` - sessions are stored in a simple PHP array and will not be persisted across requests.

NOTE: 数组驱动程序通常用于运行单元测试以防止会话数据持久化。

预留键

冬天使用flash 内部会话密钥,因此您不应使用该名称将项目添加到会话中。

会话使用

在会话中存储数据

使用Session 门面你可以调用各种函数来与底层数据交互。例如,put 方法在会话中存储一条新数据:

Session::put('key', 'value');

推送到数组会话值

push 方法可用于将新值推送到作为数组的会话值上。例如,如果user.teams key 包含一个团队名称数组,你可以像这样将一个新值推送到数组中:

Session::push('user.teams', 'developers');

从会话中检索数据

当您从会话中检索值时,您还可以将默认值作为第二个参数传递给get 方法。如果会话中不存在指定的键,将返回此默认值。如果你通过一个Closure 作为默认值get 方法,Closure 将被执行并返回结果:

$value = Session::get('key');

$value = Session::get('key', 'default');

$value = Session::get('key', function() { return 'default'; });

从会话中检索所有数据

如果您想从会话中检索所有数据,您可以使用all 方法:

$data = Session::all();

检索数据并忘记它

pull 方法将从会话中检索和删除一个项目:

$value = Session::pull('key', 'default');

确定会话中是否存在项目

has 方法可用于检查会话中是否存在项目。这个方法会返回true 如果该项目存在:

if (Session::has('users')) {
    //
}

从会话中删除数据

forget 方法将从会话中删除一条数据。如果您想从会话中删除所有数据,您可以使用flush 方法:

Session::forget('key');

Session::flush();

重新生成会话 ID

如果需要重新生成会话 ID,可以使用regenerate 方法:

Session::regenerate();

闪存数据

有时您可能希望只为下一个请求在会话中存储项目。您可以使用Session::flash 方法。使用此方法存储在会话中的数据将仅在后续 HTTP 请求期间可用,然后将被删除。闪存数据主要用于短期状态消息:

Session::flash('key', 'value');

如果您需要为更多请求保留闪存数据,您可以使用reflash 方法,它将保留所有闪存数据以备额外请求。如果您只需要保留特定的闪存数据,您可以使用keep 方法:

Session::reflash();

Session::keep(['username', 'email']);
豫ICP备18041297号-2