📜  llaravel sanctum - Shell-Bash (1)

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

Laravel Sanctum

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 的行为。

使用

下面是一些常见的使用场景。

准备工作

在开始之前,你需要确保已经完成以下准备工作:

  1. App\Models\User 模型中定义了 $apiTokens 属性;
  2. 在 AuthServiceProvider 中定义了身份验证路由;
  3. 在 RouteServiceProvider 中定义了 configureRateLimiting 方法;
  4. 在所有请求上添加 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 () {
                // ...
            });
        });
    });
}
创建 API 令牌

你可以使用 createToken 方法为用户创建 API 令牌,该方法将返回一个带有 accessTokentoken 属性的 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 或移动应用程序,使身份验证变得轻松快捷。