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: 执行成功后,会得到如下输出:
步骤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。
步骤7: 访问下面的网址,从上面的网址获取cookie。
http://localhost:8000/cookie/get
步骤8: 输出将如下图所示。