Laravel Sanctum通过个人访问令牌为移动App提供轻量级API认证,用户登录后生成带权限的token并返回明文,客户端在后续请求中携带Bearer Token;支持按场景分配read/write等权限,并可在登出时删除当前或所有设备token,结合安全存储机制保障API调用安全。

Laravel Sanctum 为移动 App 提供了一种轻量且安全的方式来生成和管理 API Token。它不像 Passport 那样复杂,适合不需要 OAuth 的场景,比如原生 App 或单页应用(SPA)通过 API 通信。
如何生成 API Token
Sanctum 使用“个人访问令牌”(Personal Access Tokens)机制,每个用户可以拥有多个 token,每个 token 可设置权限和过期时间。
以下是为移动 App 用户生成 token 的基本流程:
- 用户通过登录接口提交用户名和密码
- 服务器验证凭证,成功后为该用户创建一个 Sanctum token
- 返回 token 给客户端,后续请求携带此 token 认证
$user = Auth::attempt($credentials);
if ($user) {
$token = $user->createToken('mobile-app');
return response()->json([
'token' => $token->plainTextToken,
'user' => $user
]);
}
注意:createToken() 返回的是 Laravel\Sanctum\NewAccessToken 对象,调用 plainTextToken 属性获取明文 token 并返回给客户端。
Token 的权限控制
Sanctum 支持为 token 分配权限(scopes),便于限制其可访问的资源。
例如,你可以为只读操作和写入操作分配不同权限:
- 创建 token 时指定权限:
$user->createToken('app', ['read', 'write']) - 在路由或中间件中检查权限:
$request->user()->tokenCan('write')
这样可以在敏感操作前进行判断,增强安全性。
Token 的撤销与管理
移动 App 场景下,用户可能在多设备登录,需要支持登出、切换账号或清除 token。
常用管理方式包括:
-
登出时删除当前 token:
$request->user()->currentAccessToken()->delete(); -
登出所有设备:循环删除用户所有 token:
$user->tokens()->delete(); - 前端存储建议:将 token 存储在安全位置,如 iOS 的 Keychain 或 Android 的 SharedPreferences 加密存储,避免被窃取
配置与注意事项
确保已正确配置 Sanctum:
- 运行
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" - 执行迁移:
php artisan migrate - 在
config/sanctum.php中确认状态守卫设置为['web'],API 使用sanctum中间件 - API 路由使用
scheme:mobile等命名策略时,确保中间件生效
移动端请求必须在 Header 中携带 token:
Authorization: Bearer
基本上就这些。Sanctum 简洁高效,特别适合移动 App 的 token 管理需求,只要注意 token 存储安全和及时清理无效 token,就能保障 API 接口的安全调用。










