سلام خدمت استاد گرامی
استاد من سیستم ثبت نام و لاگین رو با api برای ریکت پیاده کردم و همینطور از laravel sanctum برای امنیت بیشتر استفاده کردم.
تا موقعی که از میدلور snctum استفاده نکنم مشکلی نیست و کار به خوبی انجام میشه.
ولی وقتی این تیکه کد رو در kernel در قسمت api فعال می کنم ،
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
دیگه اصلا ارتباط برقرار نمیشه
جالب اینجاست با پستمن مشکلی نیست
من هدر "Content-Type" :"application/json" رو فقط ست می کنم و اطلاعاتم رو با axios می فرستم
آیا هنگام استفاده از sanctum باید چیز دیگه ای ارسال کنیم که من رعایت نمی کنم؟
ممنون از شما استاد عزیز بابت پاسخ هاتون
با سلام خدمت شما همراه عزیز
لاگ رو چک کنید ببینید خطا چی دارید
استاد متشکرم مشکل قبلی حل شد و باید از این تیکه کد استفاده می کردم که توی داکیومنتیشن لاراول توضیح داده
axios.get('/sanctum/csrf-cookie').then(response => {
// Login...
});
و همینطور برای axios این رو هم اضافه کنیم:
axios.defaults.withCredentials = true;
که یک کوکی ست می کنه و بعد از اون باید درخواست ارسال بشه
حالا نکته اینجاست که برای عملیات هایی که از میدلور sanctum باید عبور کنن ، در postman ، نیاز به ست کردن Authorization داریم ولی در پروژه ای که با react می نویسیم ، اصلا نیازی به ست کردن این هدر نیست ، چون داره از این کوکی استفاده می کنه.
حالا سوال اینجاست که آیا این درست داره کار میکنه؟
و مشکل بعدی اینجاست که نمیشه logout کرد
استاد کد های logout رو به این شکل توشتم: در route/api.php:
Route::group(['middleware' => ['auth:sanctum']] , function(){
   Route::post('/logout' , [UserController::class , 'logout']);
});
و متود خروج در userController :
public function logout(Request $request){
$request->user()->currentAccessToken()->delete();
return response()->json([
'status' => 200,
'message' => 'خروج با موفقیت انجام شد',
]) ;
}
حالا مشکل اینجاست که currentAccessToken رو نمیشناسه
استاد اصلا نیازی به این شکل خروج هست یا همون کوکی رو پاک کنیم برای خروج کفایت می کنه
استاد چیزی که من متوجه شدم اینه که وقتی از sanctum استفاده می کنیم برای پروژه های خارجی spa ، همه هویت ما میشه اون کوکی. و دیگه نیازی به هدر authorization نیست. چون تا موقعی که اون کوکی باشه دسترسی به Auth::user هست
نمیدونم درست فکر می کنم یا نه استاد عزیز
با تشکر
استاد مشکل logout حل شد و اینکه نیاز نبود route مربوط به logout رو داخل میدلور sanctum بنویسم
ولی اینکه همه چیز این کوکی هست رو نمیدونم درسته یا نه استاد
اگر خروجی کار مشکلی نداره و طبق داکیومنت رفتید جلومشکلی نیست