نود.جی.اس قهرمان – احراز هویت کاربران در Node.js

نود.جی.اس قهرمان – احراز هویت کاربران در Node.js

این هفتمین پست از سری آموزش Node Hero است – در این فصل ها یاد خواهید گرفت چطور از Node.js استفاده کنید و چطور با استفاده از آن محصولات نرم افزاری توسعه دهید.

اکثر فریم ورک های Node.js همراه با یک ساختار دایرکتوری ثابت منتشر نمی شوند و شاید مجبور باشید مناسبترین آنها را انتخاب کنید. در این آموزش، یاد خواهید گرفت که چطور با آماده سازی درست ساختار پروژه Node، از سردرگمی برنامه خود هنگام توسعه جلوگیری کنید.

فصل های گذشته و آینده:

  1. شروع کار بار Node.js
  2. استفاده از NPM
  3. درک مفهوم برنامه نویسی async 
  4. ساخت اولین سرور Node.js 
  5. دسترسی به دادهای درون دیتابیس 
  6. برقراری ارتباط با API 
  7. سازماندهی ساختار پروژه 
  8. احراز هویت کاربران [در حال خواندن آن هستید]
  9. تست نرم افزار Node.js
  10. اشکال زدایی Node.js
  11. امنیت برنامه
  12. انتقال برنامه Node.js به Host اشتراکی
  13. نظارت بر روی برنامه Node.js

 

بکار بردن تکنولوژی

قبل از اینکه برنامه نویسی واقعی را شروع کنیم، اجازه دهید نگاهی به تکنولوژی های جدید که قصد داریم در این بخش استفاده کنیم بیندازیم.

Passport.js چیست؟

بطور ساده، یک احراز هویت محبوب برای Node.js است – passportjs.org

passport.js آموزش

Passport یک middleware برای احراز هویت برای Node.js است که برای مدیریت session مورد استفاده قرار می گیرد.

Redis چیست؟

Redis یک سرور پایگاه داده است، با قابلیت کلاستربندی ، متن باز، درون حافظه اصلی و همچنین Key,value دیتابیس می باشد. ردیس در گذشته توسط Pivotal,Vmware تا June2015 پشتیبانی می شد ولی هم اکنون توسط Redis Lab پشتیبانی می شود. به گفته سایت DBEngines.com و سرشماری انجام گرفته شده توسط آن Redis از مشهورترین و قابل استفاده ترین دیتابیس های Key,Value به حساب می آید.

ما قصد داریم تمام session های مربوط به کاربر را در Redis ذخیره کنیم نه در حافظه در حال اجرا. به این ترتیب برنامه ما به راحتی در مقایس های مختلف قابل نگهداری می شود.

دموی نرم افزار

اجازه دهید برنامه ای را درست کنیم که از اهداف زیر تشکیل شده باشد:

  • شامل یک فرم login
  • شامل دو صفحه حفاظت شده:
    • یک صفحه پروفایل
    • یادداشت های امن

ساختار پروژه

شما در حال حاظر دانش اینکه چطور ساختار پروژه Node.js را سازمان دهی کنید را دارید پس اجازه دهید از آن استفاده کنیم!

ما قصد داریم از ساختار زیر در برنامه خود استفاده کنیم:

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

(Download the full source code at https://github.com/RisingStack/nodehero-authentication)

روند احراز هویت در Node.js

هدف ما این است که مراحل پیاده سازی احراز هویت زیر را به برنامه اضافه کنیم:

  1. کاربر نام کاربری و رمز عبور را وارد کند
  2. برنامه معتبر بودن آنها را چک کند
  3. اگر آنها معتبر بودند، یک هدر Set-Cookie ارسال می شود که برای اعتبار سنجی کاربر در صفحات دیگر استفاده می شود.
  4. وقتی کاربر صحفه های همان دامنه را باز می کند، کوکی های قبلی به تمام درخواست ها اضافه می شود.
  5. اعتبارسنجی با این کوکی مسدود شده

 

تنظیم یک استراتژی احراز هویت همانند زیر، نیازمند مراحل زیر است:

 

قدم ۱:‌ تنظیمات Express

ما قصد داریم از Express برای فریم ورک سرور خود استفاده کنیم – می توانید درباره Express مقالات آموزشی در بابون را مطالعه کنید.

چه عملی را اینجا انجام دادیم؟

اول از همه، تمام وابستگی های برنامه که مدیریت برنامه به آنها نیاز دارد را تنظیم کردیم. پس از انجام این کار، یک نمونه جدید از ماژول express-session که session ما را ذخیره می کند را ایجاد کردیم.

برای ماندگاری اطلاعات از Redis استفاده کرده ایم، اما شما می توانید از MySQL یا MongoDB نیز استفاده کنید.

 

قدم ۲: تنظیمات Passport برای Node.js

Passport یک مثال عالی از یک کتاخانه است که از افزونه استفاده می کند. در این آموزش ما از ماژول passport-local که ما را قادر می سازد به راحتی یک احراز هویت محلی با استراتژی username و password درست کنیم.

برای سادگی در کار، در این مثال قصد نداریم مشخصات کاربران را در یک دیتابیس ذخیره کنیم، تنها یک نمونه از کاربر را در حافظه بارگذاری می کنیم. در پروژه های واقعی findUser می بایست کاربر را در دیتابیس جستجو کند!

 

وقتی findUser شی کاربر ما را برگرداند تنها چیزی که باقی می ماند مقایسه user-fed و رمز عبور واقعی است که در سیستم تطابق دارد.

 

قدم ۳:‌ ایمن سازی برنامه

برای حفاظت از برنامه، از قابلیت middleware در Express استفاده می کنیم. برای این کار، اجازه دهید ابتدا یک middleware برای احراز هویت تعریف کنیم.

در صورتی که هویت کاربر تایید شد، middleware بعدی فراخوانی می شود در غیر این صورت کاربر به صفحه ای که باید login کنید منتقل می شود.

استفاده از این به سادگی اضافه کردن middleware برای تعریف route است.

قدم بعدی

بخش بعدی از نود.جی.اس قهرمان در مورد واحد تست برنامه های Node.js خواهد بود. در بخش بعدی با مفاهیم unti test، تست هرمی و غیره آشنا خواهید شد.

در بخش نظرات سوالات و نظرات خود را مطرح کنید.


  • پوریا

    پاتریک جان این بخش سایت که مطلع شدن از مطالب جدیده نوشته ایمیل وریفیکیشن میفرسته که برای من نفرستاد شاید اشکالی داشته باشه .. یه پیشنهاد هم داشتم تازگی دیدم باب شده مصاحبه ها یا گفتگو های صوتی تو زمینه برنامه نویسی انتشار داده می‌شه یا اسکرین کست یا هر دوش با هم مثلا که ویدیو نباشه بندویچ زیاد نشه مثل بلاگ پست باقی بمونه .. اگه این ها رو به کارت اضافه کنی و پست بزاری که صوتی باشه بعد ترنسکریپتش هم زیرش اضافه کنی که متن پست رو تشکیل بده هم سرچ انجین فرندلی میشه هم برات از نوشتن راحت تر خواهد بود و شنیدن صدا شیرین تر و مفهوم تره و میتونی پست رو دو نفره مثلا راجع به بخشی از کار پیش برید و .. برو تا تهش ..

    • پاتریک درآواکیانس

      مرسی از توجه. من تست کرم مشکلی نداشت 😉
      مرسی از پیشنهاد، موقعیت پیش بیاد همچین کاری می کنم 🙂

  • farhad

    merci man az in be bass donball mikonam daram estefade mikonam damet garm