Edited at

LaravelでプレーンなCookieを作る

LaravelでCookieを作る時、勝手に暗号化してしまうのを防ぐ方法。


Controller

public function index()

{
$value = "test";
$cookie = \Cookie::make("TEST_COOKIE", $value, 60, '/', 'example.com', true, true);

return response()->withCookie($cookie);
}

こんな感じで作ったCookieは、Laravelが勝手に暗号化しちゃうらしい。

暗号化されたCookieは、同一ドメイン内のLaravel以外のアプリケーションで読み取ることが出来なかった。

(もしかしたらなにか方法があるのかもしれない・・・)

Cookieに埋め込んだ情報が暗号化するほどのデータではない場合、プレーンなCookieでも問題ないと思うので、Middlewareで除外をしてあげる。


Middleware

app/Http/Middleware/EncryptCookies.php$except 配列に除外したいCookie名を入れると暗号化を防げる。


namespace App\Http\Middleware;

use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;

class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/

protected $except = [
'TEST_COOKIE'
];
}

Cookie名はconfigで持ちたかったけども、configの内容をMiddlewareへ渡す方法がわからなかったので一旦ベタ書き対応とした。