راکت
حل شده

Request در لاراول

5 پاسخ

سلام دوستان این authorize چیه تو ریکوئست ها و چرا باید همیشهtrue قرارش داد؟
 تصویر

ثبت پرسش جدید

پاسخ‌ها

5
حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

بهترین پاسخ

سلام
کاربر د این متد برای این است که در این متد میتونیم اجازه های دسترسی رو برای یه کاربر برسی کنیم و اگه کاربری اجازه دسترسی نداشت نتونه وارد متد یا اکشنی که در این بخش براش قرار گرفته بشه.
فرض کن به یه کاربری پرمیشن ایجاد یه post داده نشده و وقتی کاربر اقدام به سابمیت کردن فرم میکنه پیش از اینکه کدهای درون متدstore اجرا بشه ابتدا مبحث اجازه دسترسی کاربر تو متد authorize برسی میشه و اگه کاربر اجازه ایجاد post رو داشت میتونه وارد متد store شده و عملیات ایجاد پست انجام بشه و در غیر اینصورت بدون این که وارد متد store بشه به کاربر خطایی با کد 403 رو نشون میده
در روتهایی که متدهاشون post یا patch هست بهترین جا برای مسئله برسی کردن اجازه دسترسی کاربر داخل متد authorize کلاس Request هست
یه نمونه کد

 public function authorize()
    {
        if (Gate::allows('create-post')) {
            return true;
        } else {
            return false;
        }
    }
Saman
Saman
@samanzdev

تخصص: برنامه نویس وب

سلام
اگه متود authorize برابر با false باشه اجازه دسترسی داده نمیشه و در واقع کد 403 برمیگردونه، پس برای اینکه اجازه بدیم validation انجام بشه باید متود authorize برابر با true باشه.
https://laravel.com/docs/9.x/validation

Pouria
Pouria
@pouria.782

تخصص: developer

میتونید یک سری اعتبار سنجی هارو قبلش انجام بدید
مثلا یک کامنت رو میخواید برای یک محصول ثبت کنید، قبل از اینکه اصلا وارد بخش اعتبار سنجی بشه چک میکنید آیا این کاربر این محصول رو خریده اگر بله true در غیر این صورت false برگردونید یا مثال های دیگر
کلا بسته به نیاز یک true یا false بر میگردونید و از ادامه روند جلو گیری میکنید

شاید پاسخ شما همین‌جا باشد

محمد میرزاخانی
محمد میرزاخانی
@mirzamohammad.com

@hosseinshirinegad98
آها ممنون متوجه شدم..بعد فقط ی سوال..چه فرقی میکنه استفاده از این روش با اینکه بدونه ریکوئست ها پرمیشن ها بررسی بشه؟یعنی از همین Gate که شما گفتید استفاده کنیم واسه دسترسی ها اما نه توی Request .

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

روش های متعددی وجود داره
اما دو روش اینجا آوردم

   public function edit(Post $post)
    {
        $this->authorize('edit-post');
        // or
         if (Gate::denies('edit-post') {
             abort(403);
         }

         // edit post
    }

لینک مستندات لاراولیش

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام