安装并配置Sanctum:通过Composer安装,发布迁移并执行;用户模型引入HasApiTokens;API路由使用auth:sanctum中间件保护;登录接口生成Token;前端在请求头Authorization: Bearer中携带Token即可完成认证。

在Laravel中为API接口配置Sanctum认证,主要是通过安装和初始化Laravel Sanctum组件,生成用户Token并用于请求身份验证。整个过程不复杂,但需要注意中间件和配置的细节。
安装并配置Sanctum
使用Composer安装Laravel Sanctum:
composer require laravel/sanctum发布Sanctum的迁移文件并执行数据库迁移:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"php artisan migrate
这会创建一个personal_access_tokens表,用于存储用户生成的API Token。
配置用户模型支持Token
确保你的用户模型(通常是App\Models\User)引入了HasApiTokens trait:
class User extends Authenticatable
{
use HasApiTokens;
// ...
}
这个trait提供了创建、管理Token的方法,比如createToken()。
设置API路由中间件
Laravel Sanctum通过sanctum.auth中间件来验证Token。在routes/api.php中,将需要保护的路由包裹在该中间件下:
Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', function (Request $request) {
return $request->user();
});
});
这样只有携带有效Token的请求才能访问这些接口。
前端获取并使用Token
客户端首先需要通过登录接口获取Token。你可以写一个简单的登录API:
use Illuminate\Http\Request;use Illuminate\Support\Facades\Auth;
public function login(Request $request)
{
if (Auth::attempt($request->only('email', 'password'))) {
$user = Auth::user();
$token = $user->createToken('api-token')->plainTextToken;
return response()->json(['token' => $token]);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
前端拿到token后,在后续请求中通过Authorization头发送:
注意:Sanctum默认接受Bearer类型的Token,即使它不是JWT。
基本上就这些。只要正确安装、配置中间件,并在请求中带上Token,就可以实现API的身份验证。适合前后端分离或移动端调用的场景,简单又安全。










