به نام خدا
در ادامه بخش قبلی ، حال باید Controllerجدید بسازیم و برای لاگین و ... Action Method داشته باشیم . قبل از انجام این کار، به DTO نیاز داریم.
دروه همام فولدر Configuration کلاسی به نام AutResult می سازیم
حال درون فولدر Models یک فولدر به نام DTO می سازیم و درون آن هم 2 فولدر به نامهای
Requests
Responses
ایجاد میکنیم.
درون فولدر Requests به کلاسی به شکل زیر نیاز داریم
حال برای Request باید Response داشته باشیم، پس درون فولدر Responsesیک کلاس به شکل و نام زیر درست میکنیم
حالا میتوانیم ساخت Controller جدید را شروع کنیم. کنترلری به نام SecurityController ایجاد میکنیم.اجازه بدهید در یک تصویر کل DI های لازمه این Controller را انجام بدهم .
حالا نوبت به Action Method است که با آن بتوانیم User Register کنیم. چون داریم از Api های آماده Identity استفاده میکنیم، کل متد را در یک تصویر به شکل زیر خواهیم داشت
این Action Method کامل شد و فکر هم نمی کنم به توضیح خاصی نیاز داشته باشد ، ولی پروژه کامپایل نخواهد شد چون ما هنوز متد GenerateJwtToken را نداریم. این متد را هم به شکل زیر خواهیم ساخت
یک Action Method هم برای لاگین بنویسیم و بعد در PostMan یکبار Registerکنیم و بعد با همان نام کاربری و رمز عبور لاگین را صدا بزنیم و JWT Token را بگیریم.
برای لاگین، به یک DTO جدید نیاز داریم که به شکل زیر ایجاد میکنیم
حال اکشن متد لاگین را به شکل زیر میسازیم
کل فرآیند لاگین، صدا زدن Api های آماده از Identity و در صورت صحیح بودن نام کاربری و رمز عبور، تولید توکن و ارسال آن به کلاینت میباشد. حالا در PostMan تست میکنیم
بر اساس تصویر بالا، کاربر با موفقیت Register کرده و Token گرفته، و در تصویر زیر خواهید دید چگونه متد لاگین را صدا خواهیم زد و توکن دریافت خواهیم نمود.
مشاهده میکنید که با نام کاربری و رمز مشابه اقدام کردم و توکن گرفتم.
حال به کنترلری که قبلن ساختیم سری میزنیم یعنی ProductController، اگر بخواهم همه Action Method های این کنترلر را زیر روال امنیتی قرار دهم که در صورتی که Tokenدنبال Request نباشد کار نکند و خطای لاگین نبودن بدهد، باید به شکل زیر عمل کنم
حال ببینیم نتیجه صدا زدن اکشن متدهای این کنترلر چه خواهد بود
به فلش دقت کنید
حال چگونه توکن را در هدر ریکوئست قرار دهم؟. به شکل زیر دقت کنید
توکن ساخته شده را به شکل بالا در هدر ریکوئست گذاشتم و می بینید که متد به درستی عمل کرده و رکورد بر میگرداند.
حالا فقط مانده که در بخشهای بعدی Refresh Token را هم به این سورس کد اضافه کنیم تا همه چیز به درستی و امنیت مناسب به کار خود ادامه دهد.