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 −执行成功后,您将收到以下输出 −

CookieController

步骤 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。

Hello World

步骤 7 − 访问以下 URL 以从上述 URL 获取 cookie。

http://localhost:8000/cookie/get

步骤 8 − 输出将如下图所示。

Virat