会话
配置
由于 HTTP 驱动的应用程序是无状态的,会话提供了一种在请求之间存储用户信息的方法。Laravel 附带了多种可通过干净统一的 API 使用的会话后端。支持流行的后端,如 Memcached、Redis 和数据库,开箱即用。
会话配置存储在 app/config/session.php
中。请务必查看此文件中可用的文档选项。默认情况下,Laravel 配置为使用 file
会话驱动,这对于大多数应用程序来说效果良好。
保留键
Laravel 框架内部使用 flash
会话键,因此您不应使用该名称向会话中添加项目。
会话使用
在会话中存储项目
php
Session::put('key', 'value');
将值推送到数组会话值中
php
Session::push('user.teams', 'developers');
从会话中检索项目
php
$value = Session::get('key');
检索项目或返回默认值
php
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'default'; });
检索项目并忘记它
php
$value = Session::pull('key', 'default');
从会话中检索所有数据
php
$data = Session::all();
确定会话中是否存在项目
php
if (Session::has('users'))
{
//
}
从会话中移除项目
php
Session::forget('key');
从会话中移除所有项目
php
Session::flush();
重新生成会话 ID
php
Session::regenerate();
闪存数据
有时您可能希望仅在下一个请求中将项目存储在会话中。您可以使用 Session::flash
方法做到这一点:
php
Session::flash('key', 'value');
重新闪存当前闪存数据以供另一个请求
php
Session::reflash();
仅重新闪存部分闪存数据
php
Session::keep(array('username', 'email'));
数据库会话
使用 database
会话驱动时,您需要设置一个表来包含会话项目。以下是该表的示例 Schema
声明:
php
Schema::create('sessions', function($table)
{
$table->string('id')->unique();
$table->text('payload');
$table->integer('last_activity');
});
当然,您可以使用 session:table
Artisan 命令为您生成此迁移!
php
php artisan session:table
composer dump-autoload
php artisan migrate
会话驱动
会话“驱动”定义了每个请求的会话数据将存储的位置。Laravel 附带了几种出色的驱动:
file
- 会话将存储在app/storage/sessions
中。cookie
- 会话将存储在安全的加密 cookie 中。database
- 会话将存储在应用程序使用的数据库中。memcached
/redis
- 会话将存储在这些快速的缓存存储中。array
- 会话将存储在简单的 PHP 数组中,并且不会在请求之间持久化。
数组驱动通常用于运行 单元测试,因此不会持久化会话数据。