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 的名称。可以使用 的实例调用 cookie 方法Illuminate\Http\Request.
    这是示例代码。
    
    //’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− 成功执行后,您将收到以下输出 −
    Cookie控制器
    步骤 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 file.
    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− 输出将如下图所示。
    维拉特