Laravel Sanctum通过API Token实现前后端分离认证,首先安装并发布迁移文件,执行php artisan migrate创建personal_access_tokens表,确保Kernel.php中注册EnsureFrontendRequestsAreStateful中间件;接着在User模型引入HasApiTokens trait以支持Token生成;配置auth.php中api守卫驱动为sanctum;创建登录接口验证用户并调用createToken返回plainTextToken;前端存储Token并在请求头携带Bearer令牌;使用auth:sanctum中间件保护API路由;退出时调用currentAccessToken()->delete()注销当前Token;推荐前端用Axios设置默认Authorization头,401时跳转登录。

Laravel Sanctum 是 Laravel 提供的一种轻量级 API 认证机制,特别适合用于前后端分离项目中的用户登录与状态管理。它通过为用户发放 API Token 的方式实现认证,也可以结合 SPA(单页应用)的会话机制来保护路由。下面介绍如何使用 Laravel Sanctum 实现前后端分离的认证流程。
在 Laravel 项目中安装 Sanctum 非常简单:
完成后,Sanctum 会在数据库中创建 personal_access_tokens 表,用于存储用户生成的 Token。
在 app/Http/Kernel.php 中,确保 EnsureFrontendRequestsAreStateful 中间件已注册在 api 组中,它允许来自前端域名的请求保持会话状态(适用于 SPA 场景)。
默认情况下,User 模型需要使用 HasApiTokens trait 来支持 Sanctum 的 token 认证:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
}
这样该模型就可以生成和管理 API Token。
打开 config/auth.php,确认 API 认证守卫使用的是 Sanctum:
'guards' => [
'api' => [
'driver' => 'sanctum',
'provider' => 'users',
],
],
这表示所有带 token 的 API 请求将由 Sanctum 处理。
创建一个登录接口,验证用户后返回登录状态或 Token。例如在控制器中:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('api-token')->plainTextToken;
return response()->json([
'message' => '登录成功',
'token' => $token,
'user' => $user
]);
}
return response()->json(['message' => '账号或密码错误'], 401);
}
前端拿到 token 后,在后续请求的 Authorization 头中携带:
Bearer 1|xyz...
在 routes/api.php 中使用 sanctum.auth 中间件保护需要认证的接口:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
只有携带有效 Token 的请求才能访问这些接口。
用户退出时,可以销毁当前使用的 Token:
public function logout(Request $request)
{
$request->user()->currentAccessToken()->delete();
return response()->json(['message' => '已退出']);
}
如果想删除所有 Token,可调用:$request->user()->tokens()->delete();
Authorization: Bearer [token]
axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;
基本上就这些。Laravel Sanctum 简洁高效,特别适合 Vue/React + Laravel 的前后端分离项目。它既支持无状态 Token 认证,也能配合 Session 实现更安全的 SPA 登录体验。
以上就是Laravel Sanctum API认证怎么用_Laravel前后端分离认证实现的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号