💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ علی عارف زاده
حل مشکلات استفاده از authorizeResource
جامعه لاراول ایجاد شده در ۳۰ فروردین ۱۴۰۲

همونطور که دوستان اشاره کردن در صورتی که طبق آموزش‌های استاد جلو بریم با این مشکل برمیخوریم که در حالت پیشفرض تمام متدهای درون VideoPolicy.php به ما false برمیگردونن .

من خیلی راجع بهش سرچ کردم و مثل اینکه خیلی‌ها به این مشکل برخوردن و دوتا راه حل براش ارائه دادن که برای من فقط یکیش کار کرد

راه حل اول که خودم ازش جواب نگرفتم از این رفرنس بود:

https://github.com/laravel/framework/issues/22847#issuecomment-521308861

راه حل دوم این هست که در تمام متدهایی که در VideoPolicy.php خالی هستن ما

return true:

بنویسیم .

ولی حتی بعد از نوشتن این مورد هم اگر ما از وبسایت log out بکنیم بازم اجازه دسترسی به هیچکدوم از متدها بهمون داده نمیشه و حتی ممکنه صفحه index هم برامون باز نشه و برای حل این مشکل کافیه اجازه بدیم که متدهای درون VideoPolicy قابلیت null شدن هم داشته باشن, برای مثال:

public function view(User $user= null, Video $video= null){
return true:
}

همونطور که فقط یک =null باید به همه متدها اضافه کنیم و اگر در متدی حتما از user استفاده میشد و نمیشد null باشه مثل متد update کافیه قبلش چک بکنید که آیا شخص log in کرده یا خیر با این صورت :

public function update(User $user= null, Video $video= null)
{
if (Auth::check($user)) {
return $user->id == $video->user_id ? Response::allow() : Response::deny('you are not authorized');
}
return false;
}

ممنون از راهنمایی 👍

rahnama ۰۷ آذر ۱۴۰۲، ۰۷:۴۷