首页 > php框架 > Laravel > 正文

laravel Sanctum如何为SPA和移动应用提供认证_Laravel Sanctum SPA及移动端认证方法

裘德小鎮的故事
发布: 2025-10-06 20:39:02
原创
720人浏览过
Laravel Sanctum通过会话和令牌两种机制分别支持SPA和移动应用认证。安装后配置中间件与CORS,SPA可基于Cookie实现登录;移动端则通过Personal Access Token认证,用户模型引入HasApiTokens trait,登录接口生成令牌并返回,API路由使用auth:sanctum中间件验证,客户端在请求头携带Bearer Token完成认证。

laravel sanctum如何为spa和移动应用提供认证_laravel sanctum spa及移动端认证方法

Laravel Sanctum 为单页应用(SPA)和移动应用提供了简洁安全的认证方案。它通过两种独立机制分别处理不同场景:基于会话的 SPA 认证和基于令牌的 API 认证。你可以根据项目需求选择使用其中一种或同时使用。

为 SPA 提供基于 Cookie 的认证

Sanctum 能让 Laravel 自身的前端或同源的 SPA 应用通过传统的会话(session)方式进行登录,享受 Laravel 原生的身份验证保护。

AppMall应用商店
AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店56
查看详情 AppMall应用商店
  • 安装与发布配置:先通过 Composer 安装 Sanctum,然后发布其迁移文件和配置。 composer require laravel/sanctum
    php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
    接着运行迁移来创建存储令牌的表:php artisan migrate
  • 启用 SPA 中间件:在 app/Http/Kernel.php 文件中,确保 'api' 中间件组包含了 EnsureFrontendRequestsAreStateful 类。这个中间件负责处理来自 SPA 的有状态请求。 'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, 'throttle:60,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, ],
  • 配置 CORS:修改 config/cors.php 文件,设置你的前端应用域名,并开启 supports_credentials,允许携带 Cookie。 'paths' => ['sanctum/csrf-cookie', 'api/*'], 'allowed_origins' => ['http://localhost:3000'], 'supports_credentials' => true,
  • 认证流程:用户登录时,前端向 Laravel 的登录路由发送 POST 请求。Laravel 验证凭据后,通过会话将用户登录,并返回成功响应。后续请求浏览器会自动携带会话 Cookie,Sanctum 和 Laravel 会自动识别已认证用户,无需手动管理令牌。

为移动应用提供基于 Token 的认证

对于移动端或需要无状态认证的场景,Sanctum 可以颁发个人访问令牌(Personal Access Tokens),客户端在每次请求时通过 Bearer Token 进行认证。

  • 准备用户模型:在你的用户模型(如 App\Models\User)中引入 HasApiTokens trait。这会为模型添加生成和管理 API 令牌的能力。 use Laravel\Sanctum\HasApiTokens;
    class User extends Authenticatable { use HasApiTokens; }
  • 创建认证接口:建立一个登录接口。当移动端提交用户名和密码后,服务端验证信息,然后为该用户创建一个令牌并返回给客户端。 $user = User::where('email', $request->email)->first();
    if ($user && Hash::check($request->password, $user->password)) { $token = $user->createToken('mobile-app')->plainTextToken; return response()->json(['token' => $token]); }
  • 保护 API 路由:在需要认证的 API 路由上使用 auth:sanctum 中间件。这样,Sanctum 会检查请求头中的 Authorization: Bearer <token> 来验证用户身份。 Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); });
  • 客户端操作:移动端收到令牌后,应将其安全地存储起来(如 Keychain 或 Keystore)。之后每次请求 API 时,都需在请求头中包含此令牌。用户登出时,调用一个注销接口删除当前令牌,并清除本地存储。
基本上就这些。Sanctum 的设计让你可以用一套工具灵活应对不同客户端的认证需求。

以上就是laravel Sanctum如何为SPA和移动应用提供认证_Laravel Sanctum SPA及移动端认证方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号