📜  laravel sanctum - PHP (1)

📅  最后修改于: 2023-12-03 15:32:33.748000             🧑  作者: Mango

Laravel Sanctum - PHP

Laravel Sanctum 是一个轻量级的身份验证系统,用于 SPA(单页应用程序) 或移动应用程序的身份验证。用于保护 Laravel API 的无状态身份验证,而不需要将身份验证存储在数据存储库中。

安装
composer require laravel/sanctum
配置

在 Laravel Sanctum 安装后,您应该使用 Artisan 命令 vendor:publish 发布 Sanctum 的配置文件和表迁移:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
使用
生成 API Token

使用 Laravel Sanctum 可生成 API Token 用于身份验证。

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

Route::post('/api/login', function (Request $request) {
    $user = User::where('email', $request->email)->first();

    if (! $user || ! Hash::check($request->password, $user->password)) {
        throw ValidationException::withMessages([
            'email' => ['The provided credentials are incorrect.'],
        ]);
    }

    $token = $user->createToken($request->device_name)->plainTextToken;

    return ['token' => $token];
});
借助 API Token 进行身份验证

使用 API Token 进行身份验证只需在请求头添加 Authorization: Bearer {TOKEN} 即可。

可以在 Laravel 的 auth 中间件中使用 Sanctum 进行身份验证:

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});
API
createToken(string $name, array $abilities = ['*']): \Laravel\Sanctum\NewAccessToken

创建新的 API Token。

forUser(\Illuminate\Contracts\Auth\Authenticatable|array|int|string $user): \Laravel\Sanctum\HasApiTokens

为用户创建 API Token。

tokens(): HasMany

获取用户的 API Token。

currentAccessToken(): ?\Laravel\Sanctum\PersonalAccessTokenModel

获取当前用户的 API Token。

结语

Laravel Sanctum 简化了 Laravel 应用程序中的身份验证流程,使 SPA 和移动应用程序的身份验证变得轻松和简单。