検索
ホームページPHPフレームワークLaravelLaravel 開発: Laravel Sanctum を使用して SPA および API 認証を実装するにはどうすればよいですか?

Laravel Sanctum は、Laravel アプリケーションに API 認証と SPA (Single Page Application) 認証を簡単に実装できる軽量の認証パッケージです。この記事では、Laravel Sanctum を使用して SPA および API 認証を実装する方法を説明します。

まず、SPA 認証と API 認証とは何かを見てみましょう。

SPA 認定とは、ページ全体をリロードするのではなく、AJAX を使用して Web サーバーに情報を要求し、部分的なコンテンツを更新する単一ページ アプリケーションを指します。 SPA を使用する場合、認証されたユーザーのみが API にアクセスできるようにするために、API を認証する必要があります。

API 認証とは、API リクエストの認証プロセスを指します。クライアントがリクエストを送信するとき、API はリクエストが予期されたユーザーからのものであることを検証する必要があります。これにより、API エンドポイントが認証されたユーザーのみによって使用されることが保証されます。

Laravel Sanctum を使用して SPA および API 認証を実装する方法の手順は次のとおりです:

1. Laravel Sanctum のインストール
Composer パッケージ マネージャーを使用して Laravel Sanctum をインストールできます。 Laravel プロジェクトで次のコマンドを実行します:

composer require laravel/sanctum

2. Laravel Sanctum インストーラーを実行します
Laravel Sanctum は、インストール中にアプリケーションを自動的に構成できるインストーラーを提供します。次のコマンドを使用してこのインストーラーを実行できます:

php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"

3. 移行の実行
Sanctum の移行を実行して、Sanctum の操作をサポートするために必要なデータベース テーブルを作成する必要があります。次のコマンドを実行します:

php artisan migrate

4. アプリケーションを構成します
Laravel Sanctum をミドルウェア スタックに追加する必要があります:

'api' => [
    'middleware' => ['auth:sanctum'],
    'throttle:60,1',
    'prefix' => 'api',
    'namespace' => 'AppHttpControllersAPI',
],

5. ユーザーに認証トークンを発行します
Laravel でSanctum さん、tokenCan メソッドを使用して、トークンに特定の API 権限があるかどうかを確認できます。 createToken メソッドを使用してユーザーに認証トークンを発行できます。

use IlluminateHttpRequest;

/**
 * Store a newly created resource in storage.
 *
 * @param  IlluminateHttpRequest  $request
 * @return IlluminateHttpResponse
 */
public function store(Request $request)
{
    $user = User::find(1);
    $token = $user->createToken('token-name', ['server:update'])->plainTextToken;

    return response()->json([
        'access_token' => $token,
        'token_type' => 'Bearer',
    ]);
}

これにより、server:update 権限を持つユーザーの「token-name」という名前のトークンが作成されます。

6. API エンドポイントの保護
コントローラーでは、「ミドルウェア」メソッドを使用して API エンドポイントを保護できます:

public function update(Request $request, $id)
{
    if (!$request->user()->tokenCan('server:update')) {
        abort(403, 'Unauthorized');
    }

    // Update the server
}

この例では、サーバーを持つユーザーのみを許可します。 :update 権限は更新メソッドにアクセスします。

7. SPA での認証トークンの使用
SPA では、Sanctum の @auth および @csrf Blade 命令を使用して認証トークンを取得できます:

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel</title>

    <!-- Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
    <script src="{{ asset('js/app.js') }}" defer></script>

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">

    <!-- Meta -->
    <meta name="csrf-token" content="{{ csrf_token() }}">
</head>
<body>
    <div id="app">
        <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
            <div class="container-fluid">
                <a class="navbar-brand" href="{{ url('/') }}">
                    {{ config('app.name', 'Laravel') }}
                </a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <!-- Left Side Of Navbar -->
                    <ul class="navbar-nav mr-auto">

                    </ul>

                    <!-- Right Side Of Navbar -->
                    <ul class="navbar-nav ml-auto">
                        <!-- Authentication Links -->
                        @guest
                            <li class="nav-item">
                                <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                            </li>
                            @if (Route::has('register'))
                                <li class="nav-item">
                                    <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
                                </li>
                            @endif
                        @else
                            <li class="nav-item dropdown">
                                <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
                                    {{ Auth::user()->name }}
                                </a>

                                <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
                                    <a class="dropdown-item" href="{{ route('logout') }}"
                                       onclick="event.preventDefault();
                                                     document.getElementById('logout-form').submit();">
                                        {{ __('Logout') }}
                                    </a>

                                    <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                                        @csrf
                                    </form>
                                </div>
                            </li>
                        @endguest
                    </ul>
                </div>
            </div>
        </nav>
        <main class="py-4">
            @yield('content')
        </main>
    </div>
    @auth
        <script>
            window.Laravel = {!! json_encode([
                'csrf_token' => csrf_token(),
                'api_token' => Auth::user()->api_token
            ]) !!};
        </script>
    @endauth
</body>

この例では、ユーザー認証トークンと CSRF トークンを取得するための Sanctum の @auth および @csrf Blade ディレクティブ。

Laravel Sanctum を使用して SPA および API 認証を実装する方法については以上です。 Laravel Sanctum を使用すると、API エンドポイントと SPA アプリケーションの保護が容易になり、セキュリティのベストプラクティスの実装に役立ちます。

以上がLaravel 開発: Laravel Sanctum を使用して SPA および API 認証を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
インクルージョンの幻想:リモートワークにおける孤立と孤独への対処インクルージョンの幻想:リモートワークにおける孤立と孤独への対処Apr 25, 2025 am 12:28 AM

トコンバティソルメントアンドロネリネスは、レモであり、regultionを実現し、等間grothopportunitionを提供し、効率的に使用します

フルスタック開発のためのLaravel:包括的なガイドフルスタック開発のためのLaravel:包括的なガイドApr 25, 2025 am 12:27 AM

laravelispopopularfulfull-stackdevelopment becuseiTOfferseamlessbbackEndpowendPowerandfflexibility.1)simplifyDatabaseItteractions.2)asbladetemplatingEngineallowsforclean、dynamictmltemplates.3)Laravelmix

ビデオ会議対決:リモート会議に適したプラットフォームを選択するビデオ会議対決:リモート会議に適したプラットフォームを選択するApr 25, 2025 am 12:26 AM

ビデオ会議プラットフォームを選択する際の重要な要因には、ユーザーインターフェイス、セキュリティ、および機能が含まれます。 1)ズームなど、ユーザーインターフェイスは直感的である必要があります。 2)セキュリティに注意を払う必要があり、Microsoftチームはエンドツーエンドの暗号化を提供します。 3)機能は要件を一致させる必要があり、Googlemeetは短い会議に適しており、Ciscowebexは高度なコラボレーションツールを提供します。

最新のLaravelと互換性のあるデータベースバージョンは何ですか?最新のLaravelと互換性のあるデータベースバージョンは何ですか?Apr 25, 2025 am 12:25 AM

Laravel10の最新バージョンは、MySQL 5.7以降、PostgreSQL 9.6以降、SQLite 3.8.8以降、SQLServer 2017以降と互換性があります。これらのバージョンは、クエリとストレージの効率を向上させるMySQL5.7のJSONデータ型など、LaravelのORM機能をサポートするため選択されます。

Laravelをフルスタックのフレームワークとして使用することの利点Laravelをフルスタックのフレームワークとして使用することの利点Apr 25, 2025 am 12:24 AM

laravelisanexcellentchoicefulfulffull stackdevelopmentduetoitsotsobustfeaturesofuse.1)そのImprifiescomplextaskswithnphpsynthenphpsynpsuls likebladeforfront-dandeloquentormforback-end.2)laravelmixandartisantystemを拡張するlaravedecosystem

Laravelの最新バージョンは何ですか?Laravelの最新バージョンは何ですか?Apr 24, 2025 pm 05:17 PM

laravel10、releaseonfebruary7,2023、isThelateStversion.itfeatures:1)改善された改善とnewReportmethexceptionhandler、2)拡張サプロポートフォーフプP8.1FeatureslikeNums、and3)

最新のLaravelバージョンはどのように開発を簡素化しますか?最新のLaravelバージョンはどのように開発を簡素化しますか?Apr 24, 2025 pm 05:01 PM

ThelatestlaravelversionEnhancesDevelopments:1)SimplifiedRoutingImplicitModelbinding、2)EnhancedEloquentCapabilitiesWithNewQueryMethods、and3)supportformdernphpeaturesliekenamedarguments、makedingdingingindenjoyableを改善しました。

最新のLaravelバージョンのリリースノートはどこにありますか?最新のLaravelバージョンのリリースノートはどこにありますか?Apr 24, 2025 pm 04:53 PM

laravel.com/docsで最新のLaravelバージョンのリリースノートを見つけることができます。 1)リリースノート新しい機能、バグの修正、改善に関する詳細情報を提供します。 2)新しい機能の適用を理解するのに役立つ例と説明が含まれています。 3)新機能の潜在的な複雑さと後方互換性の問題に注意してください。 4)リリースノートの定期的なレビューは、それを更新し続け、イノベーションを刺激することができます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。