ハッピーメモメモ

私的備忘録

【Laravel】Laravel Sanctum-SPA認証➀

認証いろいろ

ひとくちに「認証」といっても、何種類かありそう。

今回はLaravelSanctumのお世話になるので、以下2種類の認証をみてみる。

〇SPA認証

Cookieを利用する


APIトーク

トークンを利用する

Cookieは一切使用しない

APIアプリケーションの開発では、Cookieとセッションが使えない)

 

SPA認証

今回はSPA(シングルページアプリケーション)を扱うので、SPA認証で進めていく!

■インストール

①Laravel Sanctumのインストール

ターミナル

 composer require laravel/sanctum

②Sanctum設定ファイルと移行ファイルをリソース公開する

ターミナル

 php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

③データベースのマイグレーションを実行

ターミナル

 php artisan migrate

④Sanctumのミドルウェアをアプリケーションのapp/Http/Kernel.phpファイル内のapiミドルウェアグループに追加

app/Http/Kernel.php

変更前

        'api' => [
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

変更後(コメントアウトされていた部分を有効化)

        'api' => [
            \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

 

=MEMO============================

Githubでクローンして別のPCで触るときは以下のコマンドを入力

ターミナル

 composer install

=================================

 

 

■設定

〇ファーストパーティドメインの設定

→デプロイ(運用環境に配置・展開して実用に供すること)するときにドメインをかく

〇CORSとクッキー

・アプリケーションのCORS設定が、値がTrueのAccess-Control-Allow-Credentialsヘッダを返しているか確認

config/cors.php

変更前

    'supports_credentials' => false,

変更後(supports_credentialsオプションをtrueに設定)

    'supports_credentials' => true,

・axiosインスタンスでwithCredentialsオプションを有効にする

resources/js/bootstrap.js

変更前

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

変更後(2行目のコードを追加)

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
window.axios.defaults.withCredentials = true;

・アプリケーションのセッションクッキードメイン設定で、ルートドメインサブドメインを確実にサポート。config/session.php、.envあたりをいじりそう…

→デプロイするときに設定するので今回はさわらず

 

=MEMO============================

CORS(オリジン間リソース共有)

オリジン間リソース共有 (CORS) - HTTP | MDN

=================================

 

 

readouble.com

 

qiita.com