سفارشی سازی Identity در MVC

جمعه 1 مرداد 1395

در این مقاله یاد خواهید گرفت که چگونه فیلدهای دلخواه خود را به کلاس های پیش فرض Identity اضافه کنید. همچنین یاد خواهید گرفت که چگونه جداول موردنظر خود را با جداول Identity در یک دیتابیس قرار دهید.و بین این جداولRelation بزنید. وهمچنین با نحوه ی تغییر دادن سیاستگذاری Password گذاشتن برای login شدن آشنا خواهید شد.

سفارشی سازی Identity در MVC

آموزش تصویری نصب و استفاده از Asp.Net Identity 2

اضافه کردن فیلدهای دلخواه به کلاس های پیش فرض Identity:

در ASP.Net MVC5.0 کاربران و نقش ها  با استفاده از  Identity 2.0 مدیریت می شوند.  به صورت پیش فرض وقتی شما  یک account جدید ایجاد می کنید به ایمیل ، پسورد  و پذیرش پسورد نیاز دارید .

شما ممکن است به جز موارد بالا به اطلاعات دیگری از کاربر برای برنامه نیاز داشته باشید.برای مثال شما به غیر از ایمیل و پسورد ، می خواهید سن ، کشور و شهر هر کاربر را ذخیره کنید.

یک راه ساده برای سفارشی کردن Identity را قدم به قدم بررسی خواهیم کرد.

ابتدا یک پروزه  MVC  ایجاد کنید.

بعد از ایجاد پروژه ، به پوشه  Model رفته و سپس کلاس  IdentityModel.cs را باز کنید. ویژگی های زیر را در  ApplicationUser:IdentityUser  اضافه کنید .

اکنون به  AccountViewModel.cs  رفته و کدهای زیر را در قسمت  RegisterViewModel() قرار دهید.

به کلاس  AccountController.csرفته و کدهای زیر را در RegisterViewModel model اضافه کنید.

اکنون به پوشه  View  رفته و کدها را در Register.cshtml به صورت زیر تغییر دهید.

همه ی این ها ،کارهایی می باشد که باید  انجام دهید برای اضافه کردن فیلد های مورد نظر بهASP.Net Identity 2.0 که نتیجه آن به صورت زیر می باشد.

در هنگام پر کردن فیلدها ممکن است به خطا برخورد کنید.  برای حل این مشکل به  NuGet Pakage Manager  رفته و  Pakage Manager Console را بازکنید و به ترتیب دستورات زیر را در آن اجرا کنید.

Enable-Migrations

Add-Migration UpdateTable

Update-Database-verbose

دوباره پروژه را اجرا و داده های خود را وارد کنید.  پس از کلیک بر روی ثبت نام می توانید داده های وارد شده را در دیتابیس مشاهده کنید . برای مشاهده دیتابیس به  Server Explorer  بروید تا جدول های Update  شده خود را مشاهده کنید.

نحوه ی Relation  زدن به جدول Identity  :

ما در این بخش یاد خواهیم گرفت که چگونه ارتباط بین جداول Identity را با جداول خودمان برقرار کنیم.

فرض کنید ما یک جدول کالا و یک جدول درخواست کالا داریم. هر کاربر می تواند کالایی را به لیست کالاها اضافه کند و یا درخواست کالا بدهد . برای اینکه مشخص شود که چه کاربری این کالا را ثبت کرده است ، و یا چه کاربری درخواست کالا را داده است، جدول "کالا"و جدول "درخواست کالا" ،باید با  جدول "AspNetUsers"(که یکی  از جداول کلاس Identity می باشد)Relation  داشته باشند .همانطور که می دانیم برای داشتن Relation  ،باید  تمامی جداول در یک دیتابیس باشند ، در نتیجه ما باید تمامی جداول موردنظر را  دریک دیتابیس  بیاوریم و بعدRelation  بین جداول را برقرار کنیم.  

ابتدا یک پروژه جدید از نوع MVC  ایجاد می کنیم.

MVC را به عنوان قالب پروژه انتخاب کنید .

حال روی پوشه Models، راست کلیک کنید و روی Add  بروید وسپس گزینه Class را انتخاب کنید.

حال اسم کلاس موردنظرتان رامشخص کنید برای مثال ما در اینجا دو کلاس با نام های Goods و GoodsRequest  ایجاد کرده ایم.  حال کلاس Goods و GoodsRequest  ، به پوشه Model ما اضافه شده است.

حال ، property های کلاس ها را تعیین می کنیم. 

همان طور که میدانید در entity framework code first برای ایجاد ارتباط بین جداول مختلف باید از Navigation Property استفاده کنید که در اینجا Navigation Property ما ، Property ای از جنس ApplicationUser می باشد.

پس بدین ترتیب Property های کلاس های Goods و GoodsRequest ما به شکل زیر میشود.

طبق قرارداد های entity framework code first ، تنها کلاس هایی به دیتابیس map خواهند شد که در کلاس context برنامه معرفی شده باشند پس ما نیاز داریم تا این دو کلاس را به کلاس context اضافه کنیم. تغییرات در عکس زیر قابل مشاهده می باشند.

اگر هنگام ایجاد پروژه MVC آن را empty ایجاد نکنیم ، Visual Studio برای Context پیش فرض پروژه که Identity از آن استفاده میکند یک Connection String در Web.Config ایجاد میکند.

این Connection String به فایل mdf و ldf یک localDB که در مسیر پروژه ذخیره شده اند اشاره میکند. در صورت دلخواه میتوانید این رشته اتصال را متناسب با تنظیمات SQL Server خود تغییر دهید.

همان طور که میدانید بعد از هر تغییر در کلاس های مدل entity framework باید یک Migration بزنید تا تغییرات داده شده اعمال شوند. برای اینکار دستورات زیر را به ترتیب در پنجره Console Package Manager در visual studio وارد کنید.

1- Enable-Migrations

2- [Add-Migration [Migration-Name

3- Update-Database

کلاس های مربوط به Identity به قدری خوب طراحی شده اند که ما با تغییر دادن چند پارامتر میتوانیم تنظیمات Identity را به گونه ای که میخواهیم تغییر دهیم. مثلامیتوانیم با تغییر چند پارامتر ساده سیاست password کاربران (Password Policy) را به شکل زیر تغییر دهیم:

روش تغییر دادن سیاست Identity  برای password کاربران:

در پوشه App_Start   بروید و IdentityConfig  را باز کرده  در قسمت Configure validation logic for passwords که در زیر نشان داده ایم

با تغییر دادن مقدار RequredLength ویا با True  یا False کردن مقادیر دیگر هر سیاستی که شما می خواهید برای Password  خود بگذارید در این قسمت تنظیم می شود.برای مثال با تغییر دادن مقدار RequredLength طول password تغییر می کند.

آموزش asp.net mvc

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید