laravel Sanctum如何为移动App生成API令牌_Laravel Sanctum移动端API令牌生成方法

发布时间 - 2025-10-03 00:00:00    点击率:
Laravel Sanctum通过个人访问令牌实现移动端API认证,需安装并发布配置后迁移数据表,在User模型引入HasApiTokens;登录时验证用户并调用createToken生成明文令牌返回;移动端后续请求在Authorization头携带Bearer令牌,由auth:sanctum中间件认证;建议为设备独立生成令牌、提供登出删除接口、定期清理无效令牌并可扩展有效期管理,适用于轻量级移动应用对接。

Laravel Sanctum 为移动 App 提供了一种轻量级的 API 认证机制,适合用于原生或跨平台移动端应用。它通过生成持久化的个人访问令牌(Personal Access Tokens)实现用户认证,而不是依赖传统的 session 机制。以下是具体实现方式。

启用 Sanctum 并配置移动端认证

安装 Sanctum 后,需正确配置以支持移动端请求:

  • 使用 Composer 安装 Sanctum:composer require laravel/sanctum
  • 发布配置和迁移文件:php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  • 运行迁移命令创建数据表:php artisan migrate
  • User 模型中引入 HasApiTokens trait

确保 config/sanctum.php 中的 stateful 配置为空或不包含移动端域名,因为移动端通常使用无状态认证。

为移动 App 创建 API 令牌

移动端用户登录后,服务器应生成一个令牌返回给客户端:

  • 创建登录接口,验证用户名和密码
  • 验证成功后,调用用户的 createToken 方法生成令牌
  • 返回令牌的明文字符串给 App,用于后续请求头中的认证
// 示例代码:生成令牌
$user = User::where('email', $request->email)->first();
if ($user && Hash::check($request->password, $user->password)) {
  $token = $user->createToken('mobile-token')->plainTextToken;
  return response()->json(['token' => $token]);
}

移动端请求中使用令牌

App 在后续请求中需携带该令牌到请求头:

  • 设置请求头 Authorization: Bearer [token]
  • Laravel Sanctum 会自动解析此令牌并认证用户
  • 注意:Sanctum 的 Bearer 令牌实际存储在数据库中,明文仅在创建时暴露一次

确保中间件 auth:sanctum 应用于需要保护的路由。

安全与令牌管理建议

为提升安全性,建议:

  • 为不同设备生成独立令牌,便于单独撤销
  • 提供登出接口,调用 $user->currentAccessToken()->delete()
  • 定期清理过期或未使用的令牌
  • 考虑设置令牌有效期(Sanctum 默认长期有效,可自行扩展)

基本上就这些。Sanctum 简单易用,特别适合移动端与 Laravel 后端对接的场景。关键是生成令牌、安全传输、合理管理生命周期。


# php  # word  # laravel  # js  # json  # composer  # app  # access  # session  # 中间件  # if  # require 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 再谈Python中的字符串与字符编码(推荐)  js实现点击每个li节点,都弹出其文本值及修改  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何在建站宝盒中设置产品搜索功能?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  浅谈javascript alert和confirm的美化  BootStrap整体框架之基础布局组件  如何破解联通资金短缺导致的基站建设难题?  Laravel如何使用Service Container和依赖注入?(代码示例)  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  python中快速进行多个字符替换的方法小结  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  如何解决hover在ie6中的兼容性问题  Laravel如何使用Blade组件和插槽?(Component代码示例)  如何将凡科建站内容保存为本地文件?  如何快速上传自定义模板至建站之星?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  零服务器AI建站解决方案:快速部署与云端平台低成本实践  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Android利用动画实现背景逐渐变暗  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何有效防御Web建站篡改攻击?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  如何在 Pandas 中基于一列条件计算另一列的分组均值  Python面向对象测试方法_mock解析【教程】  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  如何用wdcp快速搭建高效网站?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  焦点电影公司作品,电影焦点结局是什么?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  青岛网站建设如何选择本地服务器?  ,网页ppt怎么弄成自己的ppt?  WordPress 子目录安装中正确处理脚本路径的完整指南  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel Session怎么存储_Laravel Session驱动配置详解  如何用已有域名快速搭建网站?