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
相关产品推荐
相关产品推荐

