Laravel - Cookie



Cookie 在处理 Web 应用的用户会话中扮演着重要的角色。本章将学习如何在基于 Laravel 的 Web 应用中使用 Cookie。

创建 Cookie

Cookie 可以通过 Laravel 的全局 cookie 辅助函数创建。它是一个 Symfony\Component\HttpFoundation\Cookie 的实例。可以使用 withCookie() 方法将 Cookie 附加到响应中。创建一个 Illuminate\Http\Response 类的响应实例来调用 withCookie() 方法。Laravel 生成的 Cookie 是加密和签名的,客户端无法修改或读取。

以下是一个带有解释的示例代码。

//Create a response instance
$response = new Illuminate\Http\Response('Hello World');

//Call the withCookie() method with the response method
$response->withCookie(cookie('name', 'value', $minutes));

//return the response
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’ is the name of the cookie to retrieve the value of
$value = $request->cookie('name');

示例

观察以下示例以了解更多关于 Cookie 的信息:

步骤 1 - 执行以下命令以创建一个控制器,我们将在其中操作 Cookie。

php artisan make:controller CookieController --plain

步骤 2 - 成功执行后,您将收到以下输出:

CookieController

步骤 3 - 将以下代码复制到

app/Http/Controllers/CookieController.php 文件。

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。

https://127.0.0.1:8000/cookie/set

步骤 6 - 输出将如下所示。截图中的窗口来自 Firefox,但根据您的浏览器,也可以从 Cookie 选项中检查 Cookie。

Hello World

步骤 7 - 访问以下 URL 从上面的 URL 获取 Cookie。

https://127.0.0.1:8000/cookie/get

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

Virat
广告