Rumah > Artikel > pembangunan bahagian belakang > Pengesahan keselamatan PHP dengan Laravel Sanctum
Pengesahan Keselamatan PHP dengan Laravel Sanctum
Ikhtisar:
Dalam pembangunan web moden, pengesahan keselamatan merupakan aspek yang penting. Laravel Sanctum ialah pengawal pengesahan mudah dan fleksibel yang disediakan oleh Laravel, yang boleh digunakan untuk aplikasi pemisahan bahagian hadapan dan belakang. Artikel ini akan memperkenalkan cara menggunakan Laravel Sanctum untuk melaksanakan pengesahan keselamatan PHP dan menyediakan contoh kod yang berkaitan.
Langkah 1: Pasang Laravel Sanctum
Mula-mula, pasang pakej sambungan Sanctum dalam projek Laravel. Anda boleh menggunakan Composer untuk memasang dan menjalankan arahan berikut:
composer require laravel/sanctum
Langkah 2: Konfigurasikan Sanctum
Selepas pemasangan selesai, Sanctum perlu dikonfigurasikan. Buka fail config/app.php
dalam direktori akar projek, cari tatasusunan penyedia
dan tambah kod berikut: config/app.php
文件,找到 providers
数组,并添加以下代码:
'providers' => [ // ... LaravelSanctumSanctumServiceProvider::class, ],
然后,运行以下命令来发布 Sanctum 的配置文件和数据库迁移文件:
php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"
接着,运行以下命令来执行数据库迁移:
php artisan migrate
步骤三:配置身份验证驱动程序
在设置过程中,需要选择使用 Sanctum 作为默认的身份验证驱动程序。打开 config/auth.php
文件,找到 guards
数组,并将默认的 guard 设置为 sanctum
:
'defaults' => [ 'guard' => 'sanctum', // ... ],
步骤四:启用 Sanctum 中间件
Sanctum 需要使用自己的中间件来处理身份验证。为了启用 Sanctum,需要将 Authenticate
中间件替换为 Sanctum 提供的中间件。打开 app/Http/Kernel.php
文件,将以下代码添加到 $routeMiddleware
数组中:
protected $routeMiddleware = [ // ... 'auth' => LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class, ];
步骤五:生成 Sanctum API Token
Sanctum 提供了 API Token 来进行身份验证。API Token 可以通过以下代码来生成:
use LaravelSanctumHasApiTokens; class User extends Authenticatable { use HasApiTokens; }
该代码在 User
Model 中使用了 HasApiTokens
Route::middleware('auth:sanctum')->group(function () { // 这里是需要保护的路由 });Kemudian, jalankan arahan berikut untuk menerbitkan fail konfigurasi Sanctum dan fail pemindahan pangkalan data:
use IlluminateHttpRequest; Route::post('/login', function (Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { $user = Auth::user(); $token = $user->createToken('api')->plainTextToken; return response()->json([ 'user' => $user, 'token' => $token, ]); } else { return response()->json(['error' => 'Unauthorized'], 401); } });Seterusnya, jalankan arahan berikut untuk melaksanakan pemindahan pangkalan data:
rrreee
Langkah 3: Konfigurasikan pemacu pengesahanSemasa proses persediaan, anda perlu memilih untuk menggunakan Sanctum sebagai pemacu pengesahan lalai. Buka failconfig/auth.php
, cari tatasusunan guards
dan tetapkan pengawal lalai kepada sanctum
: rrreee
Langkah 4: Dayakan Sanctum Middleware Sanctum perlu menggunakan middlewarenya sendiri untuk mengendalikan pengesahan. Untuk mendayakan Sanctum, perisian tengahAuthenticate
perlu diganti dengan perisian tengah yang disediakan oleh Sanctum. Buka fail app/Http/Kernel.php
dan tambahkan kod berikut pada tatasusunan $routeMiddleware
: rrreee
Langkah 5: Jana Token API Sanctum
Sanctum menyediakan API Token untuk pengesahan. Token API boleh dijana melalui kod berikut:
Kod ini menggunakan ciri HasApiTokens
dalam Model User
untuk menjana Token API untuk pengguna.
Atas ialah kandungan terperinci Pengesahan keselamatan PHP dengan Laravel Sanctum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!