📅  最后修改于: 2023-12-03 15:32:33.748000             🧑  作者: Mango
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
使用 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 进行身份验证只需在请求头添加 Authorization: Bearer {TOKEN}
即可。
可以在 Laravel 的 auth
中间件中使用 Sanctum 进行身份验证:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
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 和移动应用程序的身份验证变得轻松和简单。