会话服务
Configuration
由于 HTTP 驱动的应用程序是无状态的,因此会话提供了一种跨请求存储有关用户信息的方法。 Winter 附带了多种会话后端,可通过干净、统一的 API 使用。支持流行的后端,例如Memcached,Redis,并且数据库是开箱即用的。
会话配置存储在config/session.php
.请务必查看此文件中提供给您的详细记录的选项。默认情况下,Winter 配置为使用file
会话驱动程序,它适用于大多数应用程序。
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']);