Laravel Cookie


Cookie 在处理用户在 Web 应用程序上的会话时发挥着重要作用。在本章中,你将了解如何在基于 Laravel 的 Web 应用程序中使用 cookie。

创建 Cookie


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

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

// 创建响应实例
$response = new Illuminate\Http\Response('Hello World');

// 使用响应方法调用 withCookie() 方法
$response->withCookie(cookie('name', 'value', $minutes));

// 返回响应
return $response;

Cookie() 方法将采用 3 个参数。第一个参数是 cookie 的名称,第二个参数是 cookie 的值,第三个参数是 cookie 的持续时间,之后 cookie 将被自动删除。

可以使用以下代码所示的永久方法永久设置 Cookie。

$response->withCookie(cookie()->forever('name', 'value'));

获取 Cookie


一旦我们设置了cookie,我们就可以通过cookie()方法检索cookie。这个cookie()方法将只接受一个参数,这将是cookie的名称。这个cookie方法可以通过使用Illuminate/Http/Request的实例来调用。

这是一个示例代码。

// 'name' 是 cookie 的名称
$value = $request->cookie('name');

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

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

php artisan make:controller CookieController --plain

步骤2: 执行成功后,会得到如下输出:

CookieController

步骤3: 将以下代码复制到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文件中添加以下代码:

Route::get('/cookie/set','CookieController@setCookie');
Route::get('/cookie/get','CookieController@getCookie');

步骤5: 访问以下网址设置cookie:

http://localhost:8000/cookie/set

步骤6: 输出如下图所示。截图中出现的窗口取自 firefox,但根据你的浏览器,也可以从 cookie 选项中检查 cookie。

Hello World

步骤7: 访问下面的网址,从上面的网址获取cookie。

http://localhost:8000/cookie/get

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

Virat