• 1399/12/26

ارور 419 هنگام استفاده از laravel sanctum :

سلام خدمت استاد گرامی 

استاد من سیستم ثبت نام و  لاگین رو با api برای ریکت پیاده کردم و همینطور از laravel sanctum برای امنیت بیشتر استفاده کردم. 

تا موقعی که از میدلور snctum استفاده نکنم مشکلی نیست و کار به خوبی انجام میشه.

ولی وقتی این تیکه کد رو در kernel  در قسمت api فعال می کنم ،

            \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,

دیگه اصلا ارتباط برقرار نمیشه

جالب اینجاست با پستمن مشکلی نیست 

من هدر  "Content-Type"  :"application/json" رو فقط ست می کنم و اطلاعاتم رو با axios می فرستم

آیا هنگام استفاده از sanctum باید چیز دیگه ای ارسال کنیم  که من رعایت نمی کنم؟

 

ممنون از شما استاد عزیز بابت پاسخ هاتون

  • 1399/12/27
  • ساعت 00:16

با سلام خدمت شما همراه عزیز

 

لاگ رو چک کنید ببینید خطا چی دارید


  • 1399/12/27
  • ساعت 11:04

استاد متشکرم مشکل قبلی حل شد و باید از   این تیکه کد استفاده می کردم که توی داکیومنتیشن لاراول توضیح داده

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 هست

نمیدونم درست فکر می کنم یا نه استاد عزیز

با تشکر


  • 1399/12/27
  • ساعت 11:43

استاد مشکل logout حل شد و اینکه نیاز نبود route مربوط به logout رو داخل میدلور sanctum بنویسم

ولی اینکه همه چیز این کوکی هست رو نمیدونم درسته یا نه استاد


  • 1399/12/27
  • ساعت 15:17

اگر خروجی کار مشکلی نداره و طبق داکیومنت رفتید جلومشکلی نیست


logo-enamadlogo-samandehi