Laravel Sanctum怎么为SPA应用提供API认证
Laravel Sanctum通过会话机制为SPA提供轻量认证。1. 安装并发布配置文件,运行迁移;2. 配置CORS允许域名携带cookie;3. 前端先获取CSRF token再登录;4. 使用auth:sanctum中间件保护API;5.

Laravel Sanctum 为单页应用(SPA)与 Laravel 协议 API 提供简单、轻量的认证机制,消耗传统的 API token 或 OAuth。它结合了 Laravel 的会话认证机制和跨域支持,让 SPA 能够安全地调用端点 API。 1. 安装并配置 Sanctum
使用 Composer 安装 Sanctum:composer require laravel/sanctum
发布 Sanctum 的配置和迁移文件:php artisanvendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
运行迁移以创建会话表(用于记录用户状态):php artisan migrate
在 app/Http/Kernel.php确保EnsureFrontendRequestsAreStateful中间件已注册到api中间件组中,这是支持SPA跨域请求的关键:'api' =gt; [ \Illuminate\Http\Middleware\EnsureFrontendRequestsAreStateful::class, 'throttle:api', \Illuminate\Routing\Middleware\SubstituteBindings::class,],登录后复制2. 配置跨域(CORS)
确保域名被允许携带cookie发起请求。修改config/cors.php:'paths' =gt; ['sanctum/csrf-cookie', 'api/*'],'supports_credentials' =gt; true,'allowed_origins' =gt; ['http://localhost:3000'], //前端地址登录后复制
这允许前端获取CSRF cookie并保持会话状态。3. 用户登录与认证流程
Sanctum 使用 Laravel 默认的会话认证方式。
需要提供登录接口: AppMall 应用商店
AI 应用商店,提供即时交付、跟踪你的人工智能应用服务 56 查看详情 use Illuminate\Http\Request;use Illuminate\Support\Facades\Auth;public function login(Request $request){ $credentials = $request-gt;only('email', 'password'); if (Auth::attempt($credentials)) { return response()-gt;json(['message' =gt; '登录成功']); } return response()-gt;json(['message' =gt; '凭证错误'], 401);}登录后复制
接口必须先访问 /sanctum/csrf-cookie 接口来获取 CSRF token:axios.get('/sanctum/csrf-cookie');登录后复制
然后发起提交登录请求,避免CSRF校验失败。4. 保护API路由
使用auth:sanctum中间件保护需要认证的API:Route::middleware('auth:sanctum')-gt;get('/user',function (Request $request) { return $request-gt;user();});登录后复制
只要用户已登录且session有效,该接口就会返回当前用户信息。
注意:由于是基于session的认证,用户关闭浏览器或会话过期后需要重新登录。
5. 登出操作
登出时清除session并可选地使token失效(如果也用了token):use Illuminate\Http\Request;public function logout(Request $request){ Auth::guard('web')-gt;logout(); $request-gt;session()-gt;invalidate(); $request-gt;session()-gt;regenerateToken(); return response()-gt;json(['message' =gt;'已退出']);}登录后复制
基本上就这些。Laravel Sanctum 为 SPA 提供了一种简洁、安全的认证方式,无需管理 token,适合同域或可信的跨域场景。关键点在于正确配置 CORS 和补充确保获取 CSRF cookie。不复杂但细节很容易忽略,以上就是 Laravel Sanctum怎么为SPA应用提供API认证的详细内容,更多请关注乐哥常识网其他文章! 相关标签: php word laravel js 前端 json go Composer Cookie CAD 浏览器 php Laravel Composer 中间件 csrf require Cookie Session Token 接口 并发 http 大家都在看: laravel 怎么实现一个自定义的认证Guard_laravel 自定义认证Guard 实现方法 laravel 如何处理表单验证和错误信息_Laravel 表单验证与错误处理 laravel 怎么实现用户邮箱验证流程_laravel 用户邮箱验证流程实现方法 laravel 怎么实现生成和验证URL签名_laravel URL 签名生成与验证方法laravel怎么在表单请求验证器中获取路由参数_laravel表单请求验证器获取路由参数方法
