احراز هویت کاربر
در این بخش از کتاب میخواهیم قابلیت احراز هویت کاربر را به برنامه خود اضافه کنیم، به طوری که فقط کاربران ثبتنام شده و لاگین شده بتوانند اسنیپتهای جدید ایجاد کنند. کاربران لاگین نشده همچنان میتوانند اسنیپتها را مشاهده کنند و همچنین میتوانند برای یک حساب کاربری ثبتنام کنند.
گردش کار به این صورت خواهد بود:
یک کاربر با مراجعه به یک فرم در
/user/signupو وارد کردن نام، آدرس ایمیل و رمز عبور خود ثبتنام میکند. این اطلاعات را در یک جدول پایگاه داده جدیدusersذخیره میکنیم (که در لحظهای آن را ایجاد خواهیم کرد).یک کاربر با مراجعه به یک فرم در
/user/loginو وارد کردن آدرس ایمیل و رمز عبور خود لاگین میکند.سپس پایگاه داده را بررسی میکنیم تا ببینیم آیا ایمیل و رمز عبوری که وارد کردهاند با یکی از کاربران در جدول
usersمطابقت دارد یا نه. اگر مطابقت وجود داشته باشد، کاربر با موفقیت احراز هویت شده است و مقدارidمربوط به کاربر را با استفاده از کلید"authenticatedUserID"به دادههای نشست آنها اضافه میکنیم.وقتی هر درخواست بعدی را دریافت میکنیم، میتوانیم دادههای نشست کاربر را برای مقدار
"authenticatedUserID"بررسی کنیم. اگر وجود داشته باشد، میدانیم که کاربر قبلاً با موفقیت لاگین کرده است. میتوانیم این بررسی را تا زمانی که نشست منقضی شود ادامه دهیم، که در آن زمان کاربر باید دوباره لاگین کند. اگر"authenticatedUserID"در نشست وجود نداشته باشد، میدانیم که کاربر لاگین نشده است.
از بسیاری جهات، بخش زیادی از محتوای این بخش فقط ترکیب کردن چیزهایی است که قبلاً یاد گرفتهایم به روشی متفاوت. بنابراین این یک تست خوب برای درک شما و یادآوری برخی مفاهیم کلیدی است.
یاد خواهید گرفت:
- راهاندازی مسیرها و فرمهای ثبتنام/ورود.
- مدل کاربران و جدول
users. - ثبتنام و ذخیرهٔ امن رمز عبور با bcrypt.
- ورود و خروج کاربر.
- مجوزدهی با middleware و نشست.
- محافظت CSRF با SameSite و توکن.