【Laravel】SanctumでトークンをBearerではなくリクエストCookieから取得する

Laravel

Bearer認証を使う場合は、以下のようにクライアント側でAuthorizationヘッダーに直接設定する方法が一般的かと思います。

Authorization: `Bearer ${token}`,

ただ、この方法だとHttpOnlyなCookieを使用することができません。JavaScriptからアクセスすることができないからです。

そこで、Bearer以外の方法でSanctumで認証する方法はないかと思い調べると、意外と簡単に実装できました。↓

Sanctum::$accessTokenRetrievalCallback = function ($request) {
    return トークンを取得するコード
};

たとえば、以下だとリクエストCookieから取得する例です。

Sanctum::$accessTokenRetrievalCallback = function ($request) {
    return $request->cookie('api_token');
};

この方法だとHttpOnlyなCookieでも使うことができます。

この記事を書いた人
Tenma Endou

15歳からプログラミングを始め、現在は正社員+個人事業主でほぼ休まず労働
2018年に開発したアプリ「LIVLE」がTwitterで12000RTされる。(過去の栄光)
Flutter / Nuxt.js / Laravel / Go / React
お仕事依頼はこちらから⇢engineer@tepci.me

Tenma Endouをフォローする
Laravel
Tenma Endouをフォローする
目に優しいエンジニアブログ

コメント

タイトルとURLをコピーしました