نحوه authentication و authorization در لاراول و Vue

فرض کنید سایت ما سه بخش دارد:

1- بخشی که شامل صفحات landing page، نمایش یک پست، نمایش تمام پست ها و ... می باشد. این بخش توسط blade پیاده سازی می شود و ممکن است از کامپوننت های vue هم استفاده شود.

2- بخش دوم که صفحه پروفایل کاربران عادی سایت است که در آن کاربران امکان ویرایش اطلاعات کاربری خودشان، دیدن پست های خودشان و ویرایش آنها، نمایش نظرات ثبت شده و ... دارند. این بخش به صورت SPA است و کاملا با Vue پیاده سازی شده و طبیعتا تنها کاربران login شده می تواند آن را ببینند شوند.

3- بخش سوم صفحه داشبورد ادمین است که برای مدیریت بخش های مختلف و اعمال تنظیمات مورد نیاز و ... است. این بخش نیز به صورت SPA است و کاملا با Vue پیاده سازی شده. در این بخش تنها کاربران با نقش ادمین امکان فعالیت دارند و هر یک بر اساس Permissionهای داده شده به آنها می توانند برخی از کارها را انجام دهند. منظور این است که باید چک شود که آیا کاربر مجوز دیدن یک بخش یا انجام یک کار مشخص را دارد یا نه.

همچنین routing در صفحه پروفایل کاربر و داشبورد ادمین توسط vue انجام می شود و انجام actionها توسط axios و ارسال درخواست به api نوشته شده در laravel انجام می شود. و همه این سه بخش در یک application یکسان قرار دارند

حال سوال اینه که  Authentication و Authorization در این سناریو چگونه باید انجام شود؟ آیا استفاده از laravel-passport برای این کار مناسب است؟ امکان انجام هر دو مورد در laravel-passport هست؟ مثلا قرار است Authorization در بخش front-end و توسط vue انجام شود، این مورد به چه صورت باید انجام شود؟ ترکیب laravel-passport و laravel-permission - Spatie امکان پذیر هست؟ یا اصلا نیازی به آن نداریم؟

شاید سوال کلی تر: اصلا این سناریو منطقی و معقول است؟

برچسب ها:
پرسیده شده در: 4 سال قبل
آمار بازدید: 1205
0

سلام، سوال بسیار خوبی بود، من هم در طی یک پروژه این ساختار را داشتم و با توجه به شرایط صفحاتی که کاربر در آن قرار می گیرد، شیوه احراز هویت متفاوت خواهد بود:

۱) اگر کاربر به صفحه Landing مراجعه کرد و نیاز به احزار هویت بود، باید با استفاده از Authentication داخلی لاراول (Laravel Authentication) احراز هویت کاربران در صفحه Landing را انجام گیرد.

۲) اگر کاربر به صفحه پروفایل کاربری مراجعه کرد و یا می خواست به عنوان ادمین یا هر نقش دیگه ای (بسته به permission ای که تعریف کرده اید) با وب سایت کار کند و در صفحات SPA قرار گیرد، بهترین روش استفاده از لاراول پاسپورت (Laravel Passport) می باشد. البته این نکته هم بگم که احراز هویت عادی لاراول نیز برای صفحه Landing باید فعال باشد.

۳) اینکه شما میگی از پکیج laravel-permission استفاده کردی، باید بگم که باید به صورت اختصاصی یک ساختار برای Permission بنویسی، چون یک سیستم با رویکرد متفاوت داری.

ارسال شده در: 4 سال قبل
pirniak (351)
بیش از ۱ سال عضویت در روکسو بیش از ۱ سال عضویت در روکسو دارای سوال با ۱۰ رأی دارای سوال با ۱۰ رأی ارسال کننده پاسخ با ۱۰ رای ارسال کننده پاسخ با ۱۰ رای دارای ۲۰۰ کارما دارای ۲۰۰ کارما
جهت ارسال پاسخ ابتدا عضو سایت شوید.