برنامه نویسی

ساده ترین راه برای پیاده سازی احراز هویت در NestJS

Summarize this content to 400 words in Persian Lang
در این مقاله با ساده‌ترین راهنمای پیاده‌سازی احراز هویت در NestJS، کارآمدترین سازنده برنامه‌های سمت سرور مقیاس‌پذیر در میان فریمورک‌های NodeJS، آشنا می‌شوید.

ما بهترین شیوه‌ها، مفاهیم اساسی را که به اعتقاد من پیش‌نیاز کمی در آن دارید و مثال‌های واضح‌تر را پوشش خواهیم داد. هدف این است که به شما کمک کند تا قوی ترین سیستم های احراز هویت را برای برنامه های NestJS خود از مفاهیم ساده بسازید.

به عبارت ساده، احراز هویت فرآیندی است که برای نشان دادن اینکه چیزی یا شخصی قانونی، واقعی یا معتبر است استفاده می‌شود. از این رو احراز هویت راهی است برای تأیید اینکه آیا کاربر واقعاً همان کسی است که وانمود می کند قبل از دسترسی به یک سیستم یا برخی منابع این دومی.

این امر همراه با Authorization است، که فرآیندی است که در آن سرور تعیین می کند که آیا کاربر مجوز دسترسی به یک منبع خاص از یک سیستم را دارد یا خیر.

سناریوی دیدگاه توسعه دهنده

قبل از صحبت در مورد احراز هویت، مشتری باید خود را به عنوان کاربر سیستم ما ثبت کند و برای این کار باید ثبت نام کند، فرآیندی که در آن اعتبارنامه هایی را پست می کند که به سیستم اجازه می دهد بعداً او را بشناسد.

اکنون که از احراز هویت صحبت می کنیم، کاربر فرآیند را با ارسال نام کاربری/ایمیل و رمز عبور خود آغاز می کند، که سرور را تحریک می کند تا پس از احراز هویت موفق، یک JWT (Json Web Token) ایجاد کند، توکن که سپس به عنوان یک توکن حامل منتقل می شود. در سربرگ احراز هویت برای تأیید.

راهنمای گام به گام:

مرحله_1. یک منبع برای اعتبار کاربران ایجاد کنید

من فرض می‌کنم که شما قبلاً می‌دانید چگونه منابع را در NestJS ایجاد کنید، اگر نه اینجا را کلیک کنید تا نحوه انجام این کار را بیاموزید.
خوب، ابتدا منبعی به نام شاید “کاربر” ایجاد کنید، این اطلاعات اعتبار کاربران را مدیریت می کند، به یاد داشته باشید که اعتبار کاربر باید در جایی ذخیره شود، درست است؟

مرحله_2. احراز هویت را در REST API خود پیاده کنید.

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

npm nest generate resource auth

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پاسپورت (کتابخانه ای که وضعیت های احراز هویت را مدیریت می کند) را نصب و پیکربندی کنید.

npm install –save @nestjs/passport passport @nestjs/jwt passport-jwtnpm install –save-dev @types/passport-jwtnpm install passport-jwt

در auth.modute.ts، خطوط کد برجسته شده زیر را اضافه کنید[by red dots 🔴].

یک نقطه پایانی POST را در /auth/login

یک فایل جدید به نام ایجاد کنید login.dto.ts داخل src/auth/dto پوشه و سپس تعریف کنید ورود به رابط کلاس بر اساس مشخصات ایمیل و رمز عبور برای ورود.

یک فایل جدید به نام ایجاد کنید auth.entity.ts در داخل src/auth/entity که شکل the را توصیف می کند jwt محموله

یک روش ورود جدید در داخل ایجاد کنید auth.service.ts فایل

اکنون، در auth.controller.ts ایجاد یک نقطه پایانی POST در /auth/login

مرحله_3. استراتژی احراز هویت JWT را اجرا کنید

ابتدا یک فایل جدید به نام ایجاد کنید jwt.strategy.ts داخل src/auth/strategy دایرکتوری

به Auth.module.ts وارد کنید سپس اضافه کنید JwtStrategy در واردات و کاربران ماژول در ارائه دهندگان[see red dots 🔴].

برای ساختن سرویس کاربران در کلاس ما قابل دسترسی است (حتما AuthService)، شما همچنین باید آن را در صادرات به اضافه کنید UsersModule.

مرحله_4. حفاظت از منابع سیستم ما در برابر کاربران تایید نشده

نگهبان تأیید اعتبار JWT برای محافظت از مسیرهایی که برای دسترسی به آنها نیاز به احراز هویت دارند استفاده خواهد شد، در مورد ما اجازه دهید از کاربران مسیرهای API منابع بنابراین، در src/auth، یک فایل به نام ایجاد کنید jwt-auth.guard.ts.

توجه: را AuthGuard کلاس انتظار نام یک استراتژی احراز هویت را دارد. در این مورد، شما از JwtStrategy که در قسمت قبل اجرا کردید که به نام “jwt”.

اکنون می توانید از این محافظ استفاده کنید (UseGuards (JwtAuthGuard)) به عنوان یک تزئین کننده برای محافظت از نقاط پایانی شما. را اضافه کنید JwtAuthGuard به مسیرهای در UsersController.

توجه: اگر استفاده می کنید فحش دادن، یک نشانه احراز هویت را ادغام کنید که مسیرهایی را که با استفاده از آن محافظت می شوند برجسته می کند @ApiBearerAuth() دکوراتور ابتدا آن را به صورت main تعریف کنید سپس در آن پیاده سازی کنید users.controller.ts.

و اکنون شما آماده اید😮‍💨

در این مقاله با ساده‌ترین راهنمای پیاده‌سازی احراز هویت در NestJS، کارآمدترین سازنده برنامه‌های سمت سرور مقیاس‌پذیر در میان فریمورک‌های NodeJS، آشنا می‌شوید.

ما بهترین شیوه‌ها، مفاهیم اساسی را که به اعتقاد من پیش‌نیاز کمی در آن دارید و مثال‌های واضح‌تر را پوشش خواهیم داد. هدف این است که به شما کمک کند تا قوی ترین سیستم های احراز هویت را برای برنامه های NestJS خود از مفاهیم ساده بسازید.

پیاده سازی احراز هویت با NestJS

به عبارت ساده، احراز هویت فرآیندی است که برای نشان دادن اینکه چیزی یا شخصی قانونی، واقعی یا معتبر است استفاده می‌شود. از این رو احراز هویت راهی است برای تأیید اینکه آیا کاربر واقعاً همان کسی است که وانمود می کند قبل از دسترسی به یک سیستم یا برخی منابع این دومی.

این امر همراه با Authorization است، که فرآیندی است که در آن سرور تعیین می کند که آیا کاربر مجوز دسترسی به یک منبع خاص از یک سیستم را دارد یا خیر.

سناریوی دیدگاه توسعه دهنده

قبل از صحبت در مورد احراز هویت، مشتری باید خود را به عنوان کاربر سیستم ما ثبت کند و برای این کار باید ثبت نام کند، فرآیندی که در آن اعتبارنامه هایی را پست می کند که به سیستم اجازه می دهد بعداً او را بشناسد.

اکنون که از احراز هویت صحبت می کنیم، کاربر فرآیند را با ارسال نام کاربری/ایمیل و رمز عبور خود آغاز می کند، که سرور را تحریک می کند تا پس از احراز هویت موفق، یک JWT (Json Web Token) ایجاد کند، توکن که سپس به عنوان یک توکن حامل منتقل می شود. در سربرگ احراز هویت برای تأیید.

راهنمای گام به گام:

مرحله_1. یک منبع برای اعتبار کاربران ایجاد کنید

  • من فرض می‌کنم که شما قبلاً می‌دانید چگونه منابع را در NestJS ایجاد کنید، اگر نه اینجا را کلیک کنید تا نحوه انجام این کار را بیاموزید.

  • خوب، ابتدا منبعی به نام شاید “کاربر” ایجاد کنید، این اطلاعات اعتبار کاربران را مدیریت می کند، به یاد داشته باشید که اعتبار کاربر باید در جایی ذخیره شود، درست است؟

مرحله_2. احراز هویت را در REST API خود پیاده کنید.

  • دستور زیر را اجرا کنید و هنگامی که از شما خواسته شد CRUD تولید نکنید، این احراز هویت یک نوع منبع خاص است.
npm nest generate resource auth
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • پاسپورت (کتابخانه ای که وضعیت های احراز هویت را مدیریت می کند) را نصب و پیکربندی کنید.

npm install --save @nestjs/passport passport @nestjs/jwt passport-jwt
npm install --save-dev @types/passport-jwt
npm install passport-jwt

  • در auth.modute.ts، خطوط کد برجسته شده زیر را اضافه کنید[by red dots 🔴].

auth.module.ts

  • یک نقطه پایانی POST را در /auth/login

یک فایل جدید به نام ایجاد کنید login.dto.ts داخل src/auth/dto پوشه و سپس تعریف کنید ورود به رابط کلاس بر اساس مشخصات ایمیل و رمز عبور برای ورود.

auth/dto/login.dto.ts

  • یک فایل جدید به نام ایجاد کنید auth.entity.ts در داخل src/auth/entity که شکل the را توصیف می کند jwt محموله

auth/entity/auth.entity.ts

  • یک روش ورود جدید در داخل ایجاد کنید auth.service.ts فایل

auth/auth.service.ts

  • اکنون، در auth.controller.ts ایجاد یک نقطه پایانی POST در /auth/login

auth/auth.controller.ts

مرحله_3. استراتژی احراز هویت JWT را اجرا کنید

  • ابتدا یک فایل جدید به نام ایجاد کنید jwt.strategy.ts داخل src/auth/strategy دایرکتوری

auth/strategy/jwt.strategy.ts

  • به Auth.module.ts وارد کنید سپس اضافه کنید JwtStrategy در واردات و کاربران ماژول در ارائه دهندگان[see red dots 🔴].

auth/auth.module.ts

  • برای ساختن سرویس کاربران در کلاس ما قابل دسترسی است (حتما AuthService)، شما همچنین باید آن را در صادرات به اضافه کنید UsersModule.

users/users.module.ts

مرحله_4. حفاظت از منابع سیستم ما در برابر کاربران تایید نشده

  • نگهبان تأیید اعتبار JWT برای محافظت از مسیرهایی که برای دسترسی به آنها نیاز به احراز هویت دارند استفاده خواهد شد، در مورد ما اجازه دهید از کاربران مسیرهای API منابع بنابراین، در src/auth، یک فایل به نام ایجاد کنید jwt-auth.guard.ts.

auth/jwt-auth.guard.ts
توجه: را AuthGuard کلاس انتظار نام یک استراتژی احراز هویت را دارد. در این مورد، شما از JwtStrategy که در قسمت قبل اجرا کردید که به نام “jwt“.

  • اکنون می توانید از این محافظ استفاده کنید (UseGuards (JwtAuthGuard)) به عنوان یک تزئین کننده برای محافظت از نقاط پایانی شما. را اضافه کنید JwtAuthGuard به مسیرهای در UsersController.

users/user.controller.ts

توجه: اگر استفاده می کنید فحش دادن، یک نشانه احراز هویت را ادغام کنید که مسیرهایی را که با استفاده از آن محافظت می شوند برجسته می کند @ApiBearerAuth() دکوراتور ابتدا آن را به صورت main تعریف کنید سپس در آن پیاده سازی کنید users.controller.ts.

src/main.ts

users/users.controller.ts

و اکنون شما آماده اید😮‍💨

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا