由于 HTTP 驱动的应用程序是无状态的,会话提供了一种在请求之间存储用户信息的方法。October CMS 附带了多种会话接口可通过统一的 API 使用。对流行服务的支持,例如 Memcached,Redis以及数据库都是开箱即用的。
会话配置存储在 config/session.php. 请务必查阅此文件中可供您使用的已文档化的选项.
文件 - 会话存储在 storage/framework/sessions。cookie - 会话存储在安全的,加密的 cookie 中。数据库 - 会话存储在您的应用程序使用的数据库中。memcached / redis - 会话存储在这些快速、基于缓存的存储之一中。array - 会话存储在一个简单的 PHP 数组中,并且不会在请求之间持久化。默认情况下,October CMS 配置为使用 file 会话驱动程序,这对于大多数应用程序来说都非常适用。array 驱动程序通常用于运行单元测试,以防止会话数据持久化。
使用 Session 门面 你可以调用各种函数来与底层数据进行交互。例如,put 方法将新的数据存储到会话中。
Session::put('key', 'value');October CMS 内部使用
flash会话键,因此您应该避免将其用作键名。
:::
push 方法可用于向作为数组的会话值推送新值。例如,如果 user.teams 键包含一个团队名称数组,你可以像这样向该数组推送一个新值:
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();该 has 方法可用于检查会话中是否存在某个项。如果该项存在,此方法将返回 true。
if (Session::has('users')) {
//
}该 pull 方法将从会话中检索并删除一个项目。
$value = Session::pull('key', 'default');该 forget 方法将从会话中移除一条数据。如果您想从会话中移除所有数据,您可以使用 flush 方法。
Session::forget('key');
Session::flush();如果您需要重新生成会话ID,您可以使用 regenerate 方法。
Session::regenerate();要在一个语句中重新生成会话 ID 并从会话中删除所有数据,您可以使用 invalidate 方法。
Session::invalidate();有时您可能希望在会话中存储项目,仅用于下一次请求。您可以使用 Session::flash 方法来实现。使用此方法存储在会话中的数据将仅在随后的 HTTP 请求期间可用,然后将被删除。Flash 数据主要用于短暂的状态消息。
Session::flash('key', 'value');如果你需要保留你的闪存数据以便在更多的请求中使用,你可以使用 reflash 方法,它将保留所有闪存数据以便在额外的一个请求中使用。如果你只需要保留特定的闪存数据,你可以使用 keep 方法。
Session::reflash();
Session::keep(['username', 'email']);