Laravel Sanctum无法通过Cookie认证,请求返回401错误求助
我在登录流程中为用户生成Sanctum令牌并存入Cookie返回给前端,后续所有API请求均携带该Cookie,但持续出现401未授权错误。
登录函数代码
class LoginController extends Controller { public function handleLogin(Request $request) { // 获取请求中的Bearer令牌 $accessToken = $request->bearerToken(); // 调用Microsoft Graph API获取用户信息 $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $accessToken, ])->get('https://graph.microsoft.com/v1.0/me'); // return response()->json($response->json()); // exit; // 检查请求是否成功 if ($response->successful()) { $userData = $response->json(); // 检查用户是否存在于数据库中 $user = User::where('email', $userData['mail'])->first(); // 如果用户不存在,创建新用户 if (!$user) { $user = new User(); $user->username = $userData['displayName']; $user->email = $userData['mail']; $user->credits = 0; // 根据邮箱域名设置用户角色 if (strpos($userData['mail'], '@landstede.nl') !== false) { $user->role = 'admin'; } else { $user->role = 'user'; } $user->save(); } // 使用Sanctum认证用户 $token = $user->createToken('token')->plainTextToken; $cookie = cookie('auth-token', $token, 60 * 24, '/', null, true, true, false, 'None'); // 返回包含令牌的Cookie return response()->json(['message' => 'User authenticated', 'user' => $user], 200)->withCookie($cookie); } else { // 如果调用Microsoft Graph API失败,返回错误响应 return response()->json(['error' => 'Failed to retrieve user information from Microsoft Graph API'], $response->status()); } } }
路由配置
Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); }); Route::middleware('auth:sanctum')->group(function () { Route::get('/waitlist', [WaitlistController::class, 'getItems']); Route::post('/waitlist/delete/{id}', [WaitlistController::class, 'deleteItem']); Route::post('/waitlist/download', [WaitlistController::class, 'download']); Route::get('/users', [UserController::class, 'getUsers']); })->middleware('web'); Route::get('/login', [LoginController::class, 'handleLogin']);
相关截图
认证Cookie截图:

请求头截图:

内容的提问来源于stack exchange,提问作者Sjors G
相关产品推荐
相关产品推荐

