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へ渡す方法がわからなかったので一旦ベタ書き対応とした。