Laravel设置cookie不起作用

时间:2018-04-05 10:51:28

标签: laravel cookies

我在自定义中间件中有以下代码:

public function handle($request, Closure $next)
{
    if($request->hasCookie('uuid')) {
        return $next($request);    
    }

    $uuid = 99;
    $response = $next($request);
    return $response->withCookie(cookie()->forever('uuid', $uuid));

}

我已在app.php文件中注册了中间件,但仍未编写Cookie。请任何人都可以帮忙。另外,上面这个可以作为单例运行,以便在app start上执行一次吗?

由于

3 个答案:

答案 0 :(得分:5)

在这里,我提到了set并在laravel简单示例中获取了一个cookie。

首先创建一个控制器。

1. php artisan make:controller CookieController

<?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 {

  **/* below code a set a cookie in browser */**
   public function setCookie(Request $request){
      $response = new Response('Hello World');
      $response->withCookie(cookie('name', 'Anything else'));
      return $response;
   }
  **/* below code a get a cookie in browser */**
   public function getCookie(Request $request){
      $value = $request->cookie('name');
      echo $value;
   }
}

在routes / web.php文件中添加以下行代码(Laravel 5.4)

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

所有文件加载项目都比运行程序轻松设置并获取cookie。

答案 1 :(得分:2)

如果您在本地环境中,请确保在'secure' => env('SESSION_SECURE_COOKIE', false),文件的#165-170行周围设置config/session.php

在非SSL域(如http://localhost/)上,此伪指令必须为false。否则,将不会在浏览器中设置cookie。

答案 2 :(得分:1)

您可以像middleware一样获取响应对象:

public function handle($request, Closure $next)
{
    $response = $next($request);

    // Do something after the request is handled by the application

    return $response;
}

所以你可以做这样的事情

if($request->hasCookie('uuid')) {
    return $next($request);    
}

$uuid = Uuid::generate();
$response = $next($request);
return $response->withCookie(cookie()->forever('uuid', $uuid));