📅  最后修改于: 2023-12-03 15:02:45.972000             🧑  作者: Mango
Laravel Sanctum 是 Laravel 的轻型身份验证系统,用于 SPA(单页应用程序)或移动应用程序的身份验证。它使用 API 的令牌来实现身份验证,这些令牌可以轻松地与现有的用户验证系统集成。
使用 Composer 安装 Laravel Sanctum。
composer require laravel/sanctum
安装成功后,发布配置文件和数据表。
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
配置文件可在 config/sanctum.php
中找到。你可以使用 sanctum.php
中的选项来控制 Sanctum 的行为。
下面是一些常见的使用场景。
在开始之前,你需要确保已经完成以下准备工作:
App\Models\User
模型中定义了 $apiTokens
属性;configureRateLimiting
方法;web
中间件。// app/Providers/AuthServiceProvider.php
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
// ...
}
// app/Providers/AuthServiceProvider.php
use Illuminate\Support\Facades\Route;
public function boot()
{
$this->configurePermissions();
$this->routes(function () {
Route::prefix('api')->middleware('api')->group(function () {
Route::middleware('auth:sanctum')->group(function () {
// ...
});
});
});
}
你可以使用 createToken
方法为用户创建 API 令牌,该方法将返回一个带有 accessToken
和 token
属性的 Token
实例。
$token = $user->createToken('token-name');
$token->plainTextToken; // 令牌密钥
使用 auth:sanctum
中间件保护需要身份验证的路由。
use Illuminate\Http\Request;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
有时,你可能需要撤销用户的访问令牌。你可以调用 tokens()->delete()
方法来撤销所有令牌,或者使用 tokens()->where('id', $id)->delete()
来删除单个令牌。
$user->tokens()->delete();
// or
$user->tokens()->where('id', $tokenId)->delete();
Laravel Sanctum 是一个简单而强大的身份验证系统,它通过令牌进行身份验证,并可以轻松地与现有的用户验证系统集成。它适用于 SPA 或移动应用程序,使身份验证变得轻松快捷。