سلام ، من همیشه با لاراول عادت داشتم که خودم با blade هم بک اند رو بنویسم هم فرانت رو ولی جدیدا توی یه پروژه قراره فقط بک اند رو من به عهده بگیرم و ازم خواستن یه سیستم لاگین بنویسم ، سوال من اینکه چطوری کاربر رو لاگین نگه داریم ؟ تا جایی که من میدونم با api و پکیج هایی مثل sanctum میشه یه سیستم لاگین درست کرد و یه توکن ساخت یا تایید ورود و خروج رو صادر کرد ولی دقیق نمیدونم چطوری کاربری رو لاگین نگه میشه داشت چون از داخل فرانت که نمیشه به سشن ها دسترسی داشت ، اگه کسی بتونه یکم منو با این روند سیستم authentication با api اشنا کنه خیلی ممنون میشم ازش ...
@thevilgh
سلام وقت بخیر
برای این که متوجه بشیم کاربر ما لاگین هستش یا خیر اول از سمت بک اند شروع میکنم
برای مثال
کاربر وارد سایت شما میشه و برای لاگین شدن درخواست میفرسته
شما میای بهش یه توکن میدی که یه تایم غیر فعال شدن داره که 24 ساعت 48 ساعته که بستگی به شما داره
توی فرانت زمانی که کاربر درخواستشو میفرسته و شما بهش توکن میدی ما میایم این توکنو توی localstorage ذخیره میکنیم
و هر زمانی کاربره نیاز داشته باشه که درخواست جدید بفرسته سمت سرور و نشون بده که لاگینه میایم از localstorage توکنو میگیرم و به همراه درخواست میفرستیم سمت بک اند
این از مشخص کردن لاگین بودن و یا نبودن کاربر
سلام
شیوه ای که به شما واگذار شده متفاوت با سیستم قبلی شماست، در این جا لازم نیست نگران سشن ها یا لاگین بودن کاربر باشید در واقعه تنها کاری که لازمه شما انجام بدید اینه که توکن sanctum رو بررسی کنید اگر معتبر بود یعنی درخواست کاربر سمت بک اند قابل بررسی و پیگیری است و اگر توکن معتبر نبود اون رو ریدایرکت می کنید به صفحه لاگین یا هر جایی که برای شما تعریف میشه.
حالا موضوع لاگین موندن کاربر همانطوری که دوستمون توضیح دادن در سمت فرانت و به صورت localstorage بررسی و پردازش میشه که در حیطه وظایف متخصص فرانت خواهد بود، توکن توی هدر برای شما ارسال میشه شما فقط معتبر بودنش رو بررسی می کنید.
برای دسترسی به کاربری که با توکن معتبر درخواست داده به شکل زیر عمل کنید:
$user = auth('sanctum')->user();
شما یه وب سرویس برای لاگین مینویسی میدی به فرانت کار
ریسپانس این وب سرویس، یه توکن میدی بهش
فرانت کار، توکن رو نگه میداره. بعد به همراه هر وب سرویس توی header request برات میفرسته. چک میکنی که اکسپایر شده یا نه
بعد نشده بود وب سرویسای دیگه براش اجرا میشه
اگه شده بود، وب سرویس رو یه خطای خاص میدی مثلا 422 به فرانت کار هم میگی اگه خطای 422 authentication اومد کاربرو بنداز بیرون توکن هم پاک کن و هدایتش کن به صفحه لاگین
پکیجهای مثل sanctumوpassportاین اعتبارسنجی توکن رو خودکار سمت بکند انجام میدن کافیه middlewareمربوطه رو روی مسیر مدنظر قرار بدین تا هر زمان توکن سمت بکند ارسال شد معتبر بود توکن برسی شه
در api برای احراز هویت کاربر از یک رشته طولانی به نام اکسس توکن برای احراز هویت کاربر استفاده میشهو سرور با این توکن کاربرو میشناسه و پیداش میکنه اینجا دیگه سشن برای احراز هویت کاربر نداره
روش استاندارد و متعارف این هست که باید از jwt استفاده کنی. یه سرچ ساده بکنی حله. یه middleware با jwt به لاراول اضافه میکنی و در هر ریکودست هم باید داخل header درخواست ajax ارسال بشه توکن jwt
اینم لینکش هست:
راهتمای jwt
موفق باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟