سلام آقای خسروجردی، خسته نباشید.
چند تا سوال در رابطه با احراز هویت داشتم:
1. داخل ویدئوها گفتید jetstream از sanctum استفاده میکنه ولی من jetstream رو نصب کردم و وقتی register میکنم هیچ توکنی رو داخل دیتابیس ذخیره نمیکنه؟
2. داخل احراز هویت با passport چه در وب اپلیکیشن و چه در موبایل اپلیکیشن(api) زمانی که ثبت نام می کنیم دقیقا اون توکنی که تولید میشه در دیتابیس ذخیره نمیشه؟ یعنی هر دو توکن (توکن تولید شده و توکن ذخیره شده در دیتابیس) دقیقا یکی نیستن؟
سلام وقت بخیر
1. **Jetstream** از Sanctum استفاده میکند، ولی برای احراز هویت سنتی (سشن و کوکی) توکن در دیتابیس ذخیره نمیشود. برای APIها، باید از متد `createToken` استفاده کنید تا توکنها در دیتابیس ذخیره شوند.
2. **Passport** توکن واقعی (Bearer Token) را به کاربر میدهد، اما نسخه هششده آن را در دیتابیس ذخیره میکند. بنابراین توکن دریافتی و ذخیرهشده یکی نیستند، ولی از طریق هش تطبیق داده میشوند.
ببخشید
1. اگه بخوایم از jetstream که از sanctum استفاده می کند احراز هویت بر اساس توکن باشه و سنتی (سشن و کوکی) نباشه باید چیکار کنیم؟
2. چه موقع باید از passport و چه موقع باید از sanctum استفاده کنیم؟ چون من جایی شنیدم میگفتن passport بیشتر برای Web application ها هست و sanctum بیشتر برای SPA، react، react native و api استفاده میشه.
۱. برای اینکه احراز هویت در Jetstream با استفاده از Sanctum به صورت توکنی باشد و نه سشن و کوکی، باید از متد `createToken` استفاده کنید تا توکن تولید و در درخواستها از آن به عنوان **Bearer Token** استفاده شود. همچنین، درخواستها باید از طریق API و بدون سشن ارسال شوند.
۲. **Sanctum** برای SPAها (مثل React، Vue.js) و APIهای ساده مناسب است و استفاده از آن سادهتر است. **Passport** برای پروژههای پیچیدهتر با نیاز به احراز هویت OAuth2 و مدیریت سطوح دسترسی دقیق، بهتر است.
1. پس اگه بخوایم از jetstream و sanctum بصورت توکن استفاده کنیم در پروژه دوره باید front رو با react یا کتابخانه های javascript که SPA هستند بزنیم و اگه بخوایم با passport احراز هویت رو انجام بدیم داخل پروژه دوره با همین front و back مشکلی نداره؟ درسته؟
2. ببخشید وقتی که از passport و sanctum استفاده می کنیم برای چه کارهایی باید توکن کاربر رو چک کنیم و چجوری باید توکن رو چک کنیم؟ چون ما مقدارش رو درسته داخل دیتابیس ذخیره کردیم ولی باید بگیم با چی برابر باشه که اون کار انجام بشه؟ آیا باید با auth:passport یا auth:sanctum چک یا دستورش چیز دیگه هست؟ اگه دستورش رو برام بگید ممنون میشم.
بله، اگر از Jetstream همراه با Sanctum استفاده کنید و بخواهید پروژهتان یک SPA (Single Page Application) باشد، توصیه میشود از کتابخانههای جاوااسکریپت مانند React، Vue.js یا Angular برای فرانتاند استفاده کنید. دلیل این موضوع این است که Sanctum به طور پیشفرض برای پشتیبانی از احراز هویت مبتنی بر کوکی در SPAها طراحی شده است. Sanctum برای کاربردهایی مانند احراز هویت کاربر در SPA بسیار مناسب است.
برای Passport و Sanctum، نیازی به بررسی مستقیم توکنها در دیتابیس ندارید. کافیست از میدلور مناسب (auth:sanctum برای Sanctum و auth:api برای Passport) استفاده کنید تا Laravel به صورت خودکار احراز هویت را مدیریت کند.
ببخشید آقای خسروجردی، این چیزی که تا اینجا من فهمیدم این بود:
1. passport براساس توکن هست و هم برای وب و هم برای موبایل استفاده میشه.
2. sanctum هم براساس سشن و هم براساس توکن هست ولی ازسشن برای وب و از توکن برای موبایل استفاده میشه.
بله
سنکتوم برای پروژه های ساده
پاسپورت برای پروژه های بزرگ
خیلی ممنون از جوابتون.
آقای خسروجردی داخل پروژه دوره از passport استفاده نکردید و پسورد به ایمیل یا شماره تلفن کاربر ارسال میشه، به خاطر بزرگ نبودن پروژه بود یا دلیل دیگری داره؟
سلامت باشید
فقط پروژه هایی که api هستن باید بریم سراغ این پکیج ها
ما پروژمون api نبوده اصلا