Laravel tymon/jwt-auth でトークンを Cookie に保存する

環境

概要

jwt-auth では、JWT トークンを以下の順番で検索する。

  • Authorization ヘッダ (Bearer)
  • Request->query('token')
  • Request->input('token')
  • Route パラメタ (token)
  • Cookie (token)

ということで、トークンを発行したら、token という名前の Cookie を設定してあげればよい。

設定手順

class AuthController extends Controller
{
    public function login(Request $request, CookieJar $cookie): Response
    {
        $credentials = request(['email', 'password']);
        $token = auth()->attempt($credentials);
        ...
        return response(...)
            ->withCookie($cookie->make(
                'token',
                $token,
                config('jwt.refresh_ttl'), // minutes
                null, // path
                null, // domain
                $request->getScheme() === 'https', // secure
                true // httpOnly
            ));
    }
}