You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 11.x + React Inertia 移动端API认证路由配置方法

Laravel 11 + React Inertia 配置移动端API令牌认证路由

1. 安装并配置Laravel Sanctum

Laravel Sanctum是官方轻量级令牌认证工具,适配移动端API场景:

  • 安装依赖:
    composer require laravel/sanctum
    
  • 发布配置文件与迁移:
    php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
    
  • 运行数据库迁移(创建存储令牌的数据表):
    php artisan migrate
    

2. 让用户模型支持令牌认证

在app/Models/User.php中引入HasApiTokens trait:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    // 其余原有代码...
}

3. 定义API路由

在routes/api.php中编写登录接口与受保护的API路由:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Models\User;
use Illuminate\Support\Facades\Hash;

// 移动端登录接口:获取访问令牌
Route::post('/login', function (Request $request) {
    $validated = $request->validate([
        'email' => 'required|email',
        'password' => 'required',
    ]);

    $user = User::where('email', $validated['email'])->first();

    if (! $user || ! Hash::check($validated['password'], $user->password)) {
        return response()->json(['message' => '邮箱或密码错误'], 401);
    }

    // 创建并返回令牌(可自定义令牌名称,区分不同客户端)
    $token = $user->createToken('mobile-app-token')->plainTextToken;

    return response()->json([
        'token' => $token,
        'user' => $user->only('id', 'name', 'email')
    ]);
});

// 受保护的API路由组:需携带有效令牌才能访问
Route::middleware('auth:sanctum')->group(function () {
    // 获取当前登录用户信息
    Route::get('/user', function (Request $request) {
        return $request->user()->only('id', 'name', 'email');
    });

    // 示例:获取用户订单数据
    Route::get('/orders', function () {
        return auth()->user()->orders;
    });

    // 注销令牌:销毁当前登录的令牌
    Route::post('/logout', function (Request $request) {
        $request->user()->currentAccessToken()->delete();
        return response()->json(['message' => '注销成功']);
    });
});

4. 配置跨域(CORS)

如果移动端与后端服务不在同一域名下,需在config/cors.php中配置允许跨域请求:

return [
    'paths' => ['api/*', 'sanctum/csrf-cookie'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['*'], // 生产环境请替换为移动端实际域名
    'allowed_origins_patterns' => [],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 0,
    'supports_credentials' => true,
];

移动端请求说明

  • 登录:发送POST请求到/api/login,携带email和password参数,成功后获取返回的token。
  • 访问受保护接口:在请求头中添加Authorization: Bearer {你的令牌},即可正常访问auth:sanctum中间件保护的路由。

内容的提问来源于stack exchange,提问作者Sefa Dedeoglu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:17:45