• ASP.NET Core 1 – قسمت 40
ASP.NET Core 1 – قسمت 40
1395/02/10 - 14:38:41 // MVC 5 & 6 // 1 نظر // 4672 بازدید

در این قسمت باید Login را هم اضافه کنیم و در کنار آن طبیعتا LogOut هم افزوده خواهد شد. اینبار با ایجاد تغییرات در Layout View شروع خواهیم کرد ، چون به چند Link نیاز خواهم داشت تا مثلن کاربر Login کرده بتواند Logout کند و ضمننا بتوان UserName را در صورت Login بودن کاربر نمایش داد.

بسمه تعالی

ASP.NET Core 1 قسمت 40

در این قسمت باید Login را هم اضافه کنیم و در کنار آن طبیعتا LogOut هم افزوده خواهد شد. اینبار با ایجاد تغییرات در Layout View شروع خواهیم کرد ، چون به چند Link نیاز خواهم داشت تا مثلن کاربر Login کرده بتواند Logout کند و ضمننا بتوان UserName را در صورت Login بودن کاربر نمایش داد.

این مراحل به دلیل ساده بودن ، نیازی به توضیح خاصی ندارد و میتوانید در تصویر زیر آنها را مشاهده کنید. سورس پروژه هم که در اخیار شما خواهد بود.

با تغییر Layout ، لینکهای Login و Register در صورت Login نبودن و Logout و نام کاربر در بالای صفحه در صورت Loginبودن نمایان خواهد بود. هیچ نکته خاصی بجز متد GetUserName که سبب دریافت نام کاربر لاگین کرده در همه جا خواهد بود ، وجود ندارد. تنها یک Form برای Logout و چند Tag Helper برای ایجاد لینک ورود و خروج و Register و یک IF ساده برای کنترل Loginبودن و حالا نوبت به ایجاد تغییرات Account Controller و ایجاد متدهای لازمه میباشد.

متد Logout یک متد ساده از نوع Post است که به سادگی آنرا ایجاد میکنیم.

این متد از نوع Async و با یک خروجی IActionResult خواهد بود. به سادگی با استفاده از SignInManager و متد SignOutAsync میتوان Cookie ایجاد شده را تغییر و وضعیت لاکین را به LogOut تغییر داد و سپس هم کاربر را به صفحه Index ارجاع داد. اگر برنامه را اجرا و یکبار دیگرRegister کنیم ، وضعیت ظاهر صفحه این شکلی میشود .

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

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

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

این ReturnUrl همان آدرسی است که بعد از لاگین شدن در صورت وجود به آن مراجعه خواهیم کرد. وضعیت در لاگین اندکی پیچیده تر است و باید یک ViewModel دیگر هم ایجاد گردد.ViewModel را به شکل زیر بسازید.

خوب مشخص است که نام کاربری ، رمز و یک مقدار Bool داریم برای کنترل اینکه کاربر Permanent Session در کوکی نیاز دارد یا نه . آخرین آیتم هم توسط کاربر پر نمیشود ، ولی URL آخر قبل از لاگین را نگهداری و در صورت وجود بعد از لاگین کاربر را به آن منتقل میکند .

حالا نوبت Login Action Method است .

حالا نوبت ساخت Login View است .در فولدر Account یک View جدید به نام Login بسازید. این فرم هم مشابه دیگر فرمهای قبلی است و کدهای آنرا به شکل زیر میتوانید ببینید .

تنها نکته این فرم وجود LoginViewModel است که باید لحاظ شود و اینکه یک asp-route-returnurl داریم که برای پاس دادن کاربر موفق لاگین کرده به این آدرس خواهد بود. دقت کنید که فرم در وضعیت Post است پس حالا فقط مانده Post Action برای Login که در Controller آنرا ایجاد خواهیم کرد.

خوب این هم متد Login در وضعیت Post . باز هم یک متد به نام PasswordSignInAsync همه مراحل انجام لاگین را به وسیله پارامترهای UserName و Password و RememberMe بر عهده خواهد داشت. اگر ReturnURL خالی باشد ، بعد از لاگین موفق به صفحهHome میرود و اگر خالی نباشد ، به آن آدرس منتقل خواهد شد.در وصورت موفق نبودن عملیات لاگین ، خطا یا خطاهای موجود به ModelState منتقل و کاربر در ValidationSummary آنرا مشاهده خواهد کرد.

خوب فعلن برای این بسته آموزشی ، این سطح از امنیت کافی است . بر بخشهای بعدی مفاهیم دیکری را بررسی و آرام آرام به سمت پایان این Course در 5 تا هفت مقاله آینده خواهیم رفت . پس از آن نکات ریز و مباحث باقی مانده در عنوان مقالات با عنوان مجزا ارائه خواهد گردید.

 
علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
  • فرشید علی اکبری
    1395/02/10 - 15:33:47

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