ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 配置 ### 组态 由于HTTP驱动的应用程序是无状态的,因此会话提供了一种在请求之间存储有关用户信息的方法。October附带了各种会话后端,可通过干净的统一API使用这些后端。开箱即[用地](http://redis.io/)包括对流行的后端的支持,例如[Memcached](http://memcached.org/),[Redis](http://redis.io/)和数据库。 会话配置存储在中`config/session.php`。确保查看此文件中提供的详细记录的选项。默认情况下,十月配置为使用`file`会话驱动程序,它将对大多数应用程序都适用。 * `file`\-会话存储在中`storage/framework/sessions`。 * `cookie`\-会话存储在安全的加密cookie中。 * `database`\-会话存储在应用程序使用的数据库中。 * `memcached`/`redis`\-会话存储在这些快速,基于缓存的商店之一。 * `array`\-会话存储在一个简单的PHP数组中,并且不会在请求中保留。 > **注意:**阵列驱动程序通常用于运行单元测试,以防止会话数据持久化。 #### 预留键 October在`flash`内部使用会话密钥,因此您不应使用该名称在会话中添加项目。 ### [](https://octobercms.com/docs/services/session#session-usage)会话使用 #### 在会话中存储数据 使用`Session`外观,您可以调用各种函数来与基础数据进行交互。例如,该`put`方法将新数据存储在会话中: ~~~ Session::put('key', 'value'); ~~~ #### 推送到数组会话值 该`push`方法可用于将新值推送到作为数组的会话值上。例如,如果`user.teams`键包含团队名称数组,则可以像这样将新值推送到该数组: ~~~ Session::push('user.teams', 'developers'); ~~~ #### 从会话中检索数据 从会话中检索值时,还可以将默认值作为方法的第二个参数传递`get`。如果会话中不存在指定的密钥,则将返回此默认值。如果将a`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(); ~~~ ### [](https://octobercms.com/docs/services/session#flash-data)闪存数据 有时您可能希望仅在下一个请求中将项目存储在会话中。您可以使用该`Session::flash`方法进行操作。使用此方法存储在会话中的数据仅在后续HTTP请求期间可用,然后将被删除。Flash数据主要用于短暂的状态消息: ~~~ Session::flash('key', 'value'); ~~~ 如果您需要保留闪存数据以进行更多请求,则可以使用该`reflash`方法,该方法将保留所有闪存数据以用于其他请求。如果只需要保留特定的闪存数据,则可以使用以下`keep`方法: ~~~ Session::reflash(); Session::keep(['username', 'email']); ~~~