Laravel開發:如何使用Laravel Sanctum實現SPA和API驗證?
Laravel Sanctum是一個輕量級的身份驗證包,能夠讓你在Laravel應用程式中輕鬆實現API認證和SPA(單頁應用程式)認證。在本文中,我們將探討如何使用Laravel Sanctum來實作SPA和API驗證。
首先,讓我們看看什麼是SPA和API認證。
SPA認證是指單頁應用程序,它不會重新載入整個頁面,而是使用AJAX從Web伺服器請求訊息,以此更新局部內容。使用SPA時,需要對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', ]); }
這將為使用者建立一個名為‘token-name’的令牌,該令牌具有server:update權限。
6、保護API端點
在我們的控制器中,我們可以使用「middleware」方法來保護API端點:
public function update(Request $request, $id) { if (!$request->user()->tokenCan('server:update')) { abort(403, 'Unauthorized'); } // Update the server }
在這個例子中,我們只允許那些具有server:update權限的使用者存取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>
在這個例子中,我們使用了Sanctum的@auth和@csrf Blade指令,用於取得使用者驗證令牌和CSRF令牌。
這就是如何使用Laravel Sanctum實現SPA和API身份驗證的全部內容。使用Laravel Sanctum可以輕鬆保護我們的API端點和SPA應用程序,並幫助我們實現最佳安全實踐。
以上是Laravel開發:如何使用Laravel Sanctum實現SPA和API驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

想要學習 Laravel 框架,但苦於沒有資源或經濟壓力?本文為你提供了免費學習 Laravel 的途徑,教你如何利用網絡平台、文檔和社區論壇等資源,從入門到掌握,為你的 PHP 開發之旅奠定堅實基礎。

Laravel 提供了一個全面的 Auth 框架,用於實現用戶登錄功能,包括:定義用戶模型(Eloquent 模型)創建登錄表單(Blade 模板引擎)編寫登錄控制器(繼承 Auth\LoginController)驗證登錄請求(Auth::attempt)登錄成功後重定向(redirect)考慮安全因素:哈希密碼、防 CSRF 保護、速率限制和安全標頭。此外,Auth 框架還提供重置密碼、註冊和驗證電子郵件等功能。詳情請參閱 Laravel 文檔:https://laravel.com/doc

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

在面向初学者的 Laravel 框架版本选择指南中,本文深入探討了 Laravel 的版本差異,旨在協助初學者在眾多版本之間做出明智的選擇。我們將重點介紹每個版本的關鍵特徵、比較它們的優缺點,並提供有用的建議,幫助新手根據他們的技能水準和項目需求挑選最合適的 Laravel 版本。對於初學者來說,選擇一個合適的 Laravel 版本至關重要,因為它可以顯著影響他們的學習曲線和整體開發體驗。

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。
