Laravel 開発: 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 サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

ホットトピック









