سفارشی سازی Identity در MVC
جمعه 1 مرداد 1395در این مقاله یاد خواهید گرفت که چگونه فیلدهای دلخواه خود را به کلاس های پیش فرض Identity اضافه کنید. همچنین یاد خواهید گرفت که چگونه جداول موردنظر خود را با جداول Identity در یک دیتابیس قرار دهید.و بین این جداولRelation بزنید. وهمچنین با نحوه ی تغییر دادن سیاستگذاری Password گذاشتن برای login شدن آشنا خواهید شد.
آموزش تصویری نصب و استفاده از 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
- ASP.net MVC
- 4k بازدید
- 7 تشکر