由于 HTTP 驱动的应用程序是无状态的, 会话提供了一种在请求之间存储用户信息的方式. October CMS 附带多种会话接口, 可通过统一的 API 使用. 对流行服务的支持, 例如 Memcached, Redis, 以及 数据库 是开箱即用的.
会话配置存储在 config/session.php. 务必查阅此文件中向你提供的文档中说明的选项.
文件 - 会话存储在 storage/framework/sessions。cookie - 会话存储在安全、加密的 Cookies 中database - 会话存储在您的应用程序使用的数据库中。memcached / redis - 会话存储在这些快速的、基于缓存的存储之一中。array - 会话存储在一个简单的 PHP 数组中并且不会在请求之间持久化默认情况下,October CMS 配置为使用 file 会话驱动,这对于大多数应用程序都适用。 array 驱动通常用于运行单元测试,以防止会话数据持久化。
使用 Session facade 你可以调用各种函数来与底层数据进行交互。 例如,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 请求期间可用,然后将被删除。闪存数据主要用于短暂的状态消息。
Session::flash('key', 'value');如果你需要让你的一次性数据在更多请求中保持可用,你可以使用 reflash 方法,该方法会使所有的一次性数据在额外的一个请求中保持可用。如果你只需要保留特定的一次性数据,你可以使用 keep 方法。
Session::reflash();
Session::keep(['username', 'email']);