Sanctum 是 Laravel 官方推荐的轻量级 API 认证方案,专为 SPA 设计,基于 token + CSRF 实现无状态认证;需安装配置、执行迁移、设置 API guard;登录分三步:获取 CSRF cookie、提交凭证并生成 token、前端携带 Bearer Token 请求;路由用 auth:sanctum 中间件保护;登出须后端销毁 token 并前端清理。

Sanctum 是 Laravel 官方推荐的轻量级 API 认证方案,特别适合 SPA(单页应用)场景——它不依赖 session cookie 的传统 Web 认证,而是通过 token + CSRF 保护实现安全、无状态的前后端分离登录。
一、安装与基础配置
在 Laravel 项目中执行:
- composer require laravel/sanctum
- php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
- php artisan migrate(生成 personal_access_tokens 表)
然后在 app/Providers/AuthServiceProvider.php 的 boot() 方法中添加:Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);(可选,若自定义 Token 模型)
并在 config/auth.php 中确保 'api' guard 使用 'sanctum' driver。
二、SPA 登录流程(关键三步)
前端(如 Vue/React)向后端发起登录请求时,需配合 Laravel 的 CSRF 机制:
-
先 GET /sanctum/csrf-cookie:触发服务端设置
XSRF-TOKENcookie(前端自动携带) -
再 POST /login:提交邮箱/密码,后端验证成功后调用
Auth::attempt(),再用auth()->user()->createToken('spa')->plainTextToken生成 token -
响应中返回 token(不存 cookie):前端将其存在 localStorage 或 pinia/vuex 状态中,后续所有 API 请求在
Authorization: Bearer {token}头中携带
三、API 路由保护与用户获取
在 routes/api.php 中使用 middleware('auth:sanctum'):
标签: php vue react laravel redis 前端 go composer cookie app access
还木有评论哦,快来抢沙发吧~