• ASP.NET Core 1 – قسمت 34
ASP.NET Core 1 – قسمت 34
1395/02/08 - 20:54:35 // MVC 5 & 6 // 0 نظر // 445 بازدید

یکی از مباحث مهم در پروژه های وب ، تشخیص لاگین بودن یا نبودن کاربر و در کنار آن کنترل سطح دسترسی کاربر لاگین کرده میباشد . راههای زیادی برای اینکار وجود دارد ، ولی قصد من استفاده از روش Default و مبتنی بر Identity و در عمل Forms Authentication در سطح پروژه میباشد .

بسمه تعالی

ASP.NET Core 1 قسمت سی و چهارم

یکی از مباحث مهم در پروژه های وب ، تشخیص لاگین بودن یا نبودن کاربر و در کنار آن کنترل سطح دسترسی کاربر لاگین کرده میباشد . راههای زیادی برای اینکار وجود دارد ، ولی قصد من استفاده از روش Default و مبتنی بر Identity و در عمل Forms Authentication در سطح پروژه میباشد .

ASP.NET Identity یکی دیگر از Dependency هایی است که باید به پروژه Add شود تا بتوان در سطح پروژه کاربران را مدیریت نمود.این Library که از طریق Nuget یا Project.Json قابلیت افزوده شده به پروژه دارد ، وظیفه کنترل کاربر برای Login و LogOut ، Forget Password و ... را بر عهده دارد. این قابلیت حتی توان برقراری Two Factor Authentication را در سطح پروژه دارد .سناریوی من در این سری مقالات دادن توانایی Register و Login و Logout به کاربر با یک رمز Local ، یعنی رمز ذخیره شده در DataBase پروژه میباشد . راههای دیگری مانند استفاده از Facebook Login یا Google Login و ... هم هست که فعلن در مبحث ما نمی گنجند و بعدن پس از اتمام کل مجموعه Core 1 به صورت یک تک مقاله ارائه خواهد شد.

برای ایجاد این لایه امنیتی باید یک User Entity ایجاد شود . پس از آن این کلاس باید در UserStore استفاده شود. UserStore وظیفه ایجاد و کنترل رمزها و ... را بر عهده دارد.در عمل این UserStore است که با دیتابیس در ارتباط است . باید اینگونه گفت که Entity Frame Work به صورت کامل Identity و دیتابیسهای ساپورت شده در آن را به خوبی Handle کرده و میتوان از آن به آسانی استفاده نمود. خودتان هم میتوانید برای خودتان یک UserStore به صورت Custom شده ایجاد کنید . جهت کار با Entity FrameWork به یک IdentityDB هم نیاز خواهیم داشت. IdentityDb وUserStore در کنار هم وظیفه کنترل ، رمزنگاری و دیگر عملیاتهای مرتبط با نام کاربری و رمز عبور را بر عهده دارند. دو بخش دیگر در این سناریو درگیر هستند . SignInManager وظیفه کنترل کاربر Login شده و همینطور Logout کردن آنرا در صورت نیاز بر عهده دارد . در Forms Aut روند Login مبتنی بر کوکی خواهد بود. به محض لاگین شدن ، SignInManager یک کوکی می سازد و همه Request ها برای ValidateValidate شدن با این Coockie در ارتباط خواهند بود . بخش بعدی و در عمل بخش آخر این اجزا ، Identity MiddleWare است . همه این اجزا سبب خواهند شد در صورت لزوم کاربر مجبور به Login شود و در کنار آن میتوان دسترسی کاربر را به بعضی از Controller ها یا بعضی متدهای آن محدود و به این صورت سطح دسترسی ایجاد و یک پروژه سنگین را بر اساس سطح دسترسی کاربر مدیریت نمود .

یک Authorize Attribute در سطح Controller ها درصد بزرگی از وظایف این روند را بر عهده داشته و حال وقت آن است که در قسمت بعدی کلیه این روشها و شکل پیاده سازی آنرا در سطح پروزه به صورت عملی بررسی کنیم.

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

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

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر