Laravel - Cookie
Cookie 在 Web 应用程序上处理用户会话时起着重要作用。在本章中,您将了解如何在基于 Laravel 的 Web 应用程序中使用 Cookie。
创建 Cookie
Cookie 可以通过 Laravel 的全局 Cookie 助手创建。它是 Symfony\Component\HttpFoundation\Cookie 的一个实例。可以使用 withCookie() 方法将 Cookie 附加到响应。创建 Illuminate\Http\Response 类的响应实例以调用 withCookie() 方法。Laravel 生成的 Cookie 经过加密和签名,客户端无法修改或读取。
以下是带有说明的示例代码。
//创建响应实例
$response = new Illuminate\Http\Response('Hello World');
//使用响应方法调用 withCookie() 方法
$response->withCookie(cookie('name', 'value', $minutes));
//返回响应
return $response;
Cookie() 方法将接受 3 个参数。第一个参数是 cookie 的名称,第二个参数是 cookie 的值,第三个参数是 cookie 的持续时间,超过该时间后 cookie 将自动删除。
可以使用 forever 方法永久设置 Cookie,如以下代码所示。
$response->withCookie(cookie()->forever('name', 'value'));
检索 Cookie
设置 cookie 后,我们可以通过 cookie() 方法检索 cookie。此 cookie() 方法仅接受一个参数,即 cookie 的名称。可以使用 Illuminate\Http\Request 实例来调用 cookie 方法。
以下是示例代码。
//'name' 是要检索其值的 cookie 的名称
$value = $request->cookie('name');
示例
观察以下示例以了解有关 Cookies 的更多信息 −
步骤 1 − 执行以下命令创建一个控制器,我们将在其中操作 cookie。
php artisan make:controller CookieController --plain
步骤 2 −执行成功后,您将收到以下输出 −
步骤 3 − 复制以下代码
app/Http/Controllers/CookieController.php file.
app/Http/Controllers/CookieController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class CookieController extends Controller {
public function setCookie(Request $request) {
$minutes = 1;
$response = new Response('Hello World');
$response->withCookie(cookie('name', 'virat', $minutes));
return $response;
}
public function getCookie(Request $request) {
$value = $request->cookie('name');
echo $value;
}
}
步骤 4 − 在 app/Http/routes.php 文件 中添加以下行。
app/Http/routes.php
Route::get('/cookie/set','CookieController@setCookie');
Route::get('/cookie/get','CookieController@getCookie');
步骤 5 − 访问以下 URL 以设置 cookie。
http://localhost:8000/cookie/set
步骤 6 − 输出将如下所示。屏幕截图中显示的窗口取自 Firefox,但根据您的浏览器,也可以从 cookie 选项中检查 cookie。
步骤 7 − 访问以下 URL 以从上述 URL 获取 cookie。
http://localhost:8000/cookie/get
步骤 8 − 输出将如下图所示。

