پیاده سازی Identity با استفاده از MVC

پنجشنبه 28 مرداد 1395

در این مقاله در مورد اصول Identity توضیح داده می شود ، چگونگی ایجاد Identity و استفاده از آن در ASP.NET MVC و از Owin برای پیاده سازی Identity استفاده می کنیم .

پیاده سازی Identity با استفاده از MVC

تعریف

Identity یک راه امن از روش های تایید هویت در برنامه های وب است و برای شناسایی کاربر مجازی استفاده می شود .

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

زمینه

راه های زیادی برای ایجاد Identity در برنامه وجود دارد، اما در این مقاله میخواهیم این سیستم را با استفاده از Owin پیاده سازی کنیم.Owin  به ما کمک میکند تا برای ایجاد Identity کم تر کد بزنیم.Identiy  کاربر را میابد و به آن اجازه ی ورود به برنامه را می دهد و اگر کاربر ناشناس باشد از ورود آن جلو گیری میکند.

به طور کلی

سه  assemblies برای ایجاد Identity وجود دارد. این assemblies ها به برنامه نویس برای ایجاد Identity کمک میکنند.این assemblies  ها بسیار مهم هستند:

•  Microsoft.Asp.Net.Identiy.Core 
•  Microsoft.Asp.Net.Identiy.EntityFramework 
•  Microsoft.Asp.Net.Identiy.Owin

OWIN

ASP.NET MVC   و ASP.NET Core  از(Open Web Interface for .NET) OWIN پشتیبانی می کنند. 

OWIN یک رابط بین برنامه های کاربردی و وب سرور است.هدف اصلی  OWIN جدا سازی سرور و برنامه است و مانند یک ابزار عمل می کند.

ASP.NET MVC با استفاده از میان افزار میتوانند با برنامه های مبتنی با OWIN،سرورها و میان افزارها رابطه برقرار کنند.این ویژگی برای توسعه متد های احراز هویت متعدد به ما کمک می کند.

برای احراز هویت میان افزار ها را به آن اعمال می کنیم.

 نمودار زیر را مشاهده کنید :

 ASP.NET MVCدر   Identityمراحل  ایجاد

مرحله اول:

در ویژوال استودیو یک پروژه جدید از نوع ASP.NET Web Application ایجاد کنید.

مرحله دوم: MVC را انتخاب کنید و در قسمت چپ برروی Change Authentication  کلیک کنید.

مرحله سوم :

ما میتوان از Authentication های مختلفی استفاده کنیم.در حال حاظر در این برنامه Individual User Accounts انتخاب میکنیم و دکمه OK را میزنیم.

Individual User Accounts برای برنامه های کاربردی است که پروفایل کاربر را در بانک اطلاعاتی SQL Server ذخیره سازی می کند و کاربران میتوانند برای ثبت نام از حساب های فیسبوک ، گوگل و.. خود استفاده کنند.

مرحله چهارم:

پس از انتخاب نوع  Authentication به پنجره قبلی بروید و ok را بزنید چند لحظه صبر کنید تا پروژه ایجاد شود.

مرحله پنجم:

پس از این که پروژه ایجاد شد فایل Startup.cs را باز کنید ، مشاهده می کنید که پروژه با assembly شروع شده است.

برروی ConfigureAuth(app) راست کلیک کنید ، و Go To Definition  را انتخاب کنید حال کد هایی که به صورت خودکار ایجاد شده اند را مشاهده می کنید.

در تصویر زیر میتوان انواع احراز هویت ها را در OWIN مشاهده کنید.زمانی که از OWIN استفاده می کنیم کد ها به صورت خودکار تولید می شوند و برنامه نویس نیازی به کد نویسی ندارد.

مرحله ششم:

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

مرحله هفتم :

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

اگر قبلا ثبت نام کرده اید ، برروی ورود کلیک کنید و وارد برنامه شوید.

بعد از که ورود با موفقیت انجام شود نام کاربری شما در قسمت بالایی صفحه نشان داده میشود.

مرحله هشتم :

ما میتوان از Identity  در تمامی صفحات استفاده کنیم.حال Identity را در صفحات دیگر فعال می کنیم.

یک Controller  ایجاد می کنیم و Identity را با استفاده از   attribute و با کمک OWIN middleware  فعال می کنیم.

پس از ایجاد Controller کد های زیر را وارد کنید.

کد فعال سازی  Identity

1.	using System;  
2.	using System.Collections.Generic;  
3.	using System.Linq;  
4.	using System.Web;  
5.	using System.Web.Mvc;  
6.	  
7.	namespace NewIdentity.Controllers  
8.	{  
9.	    public class TestController : Controller  
10.	    {  
11.	        // GET: Test  
12.	        public ActionResult Identity()  
13.	        {  
14.	            return Content("با احراز هویت");  
15.	        }  
16.	        public ActionResult NonIdentiy()  
17.	        {  
18.	            return Content("بدون احراز هویت");  
19.	        }  
20.	    }  
21.	}  

با استفاده از URL زیر برنامه خود را اجرا کنید .

http://localhost:51868/Test/Identity

به دلیل این که این مورد از صفت ها برای فعال سازی Identity استفاده نمی کند، اگر شما فعال سازی را با استفاده از صفت ها انجام بدهید، هر بار از شما برای فعال سازی، درخواست مجوز می کند. ممکن است بر حسب کنترلر، view و یا شماره پورتی که در پروژه تان استفاده می کنید، متفاوت باشد.

کد پس از فعال کردن Identity

1.	using System;  
2.	using System.Collections.Generic;  
3.	using System.Linq;  
4.	using System.Web;  
5.	using System.Web.Mvc;  
6.	  
7.	namespace NewIdentity.Controllers  
8.	{  
9.	    public class TestController : Controller  
10.	    {  
11.	        // GET: Test  
12.	        /// <summary>  
13.	        /// Identity In Action Result Level  
14.	        /// </summary>  
15.	        /// <returns></returns>  
16.	        [Authorize]  
17.	        public ActionResult Identity()  
18.	        {  
19.	            return Content("با احراز هویت");  
20.	        }  
21.	        public ActionResult NonIdentiy()  
22.	        {  
23.	            return Content("بدون احراز هویت");  
24.	        }  
25.	    }  
26.	}  

با استفاده از صفت “ ”Authorize میتوان Identity را فعال کنید . کد زیر نحوه فعال کردن Identity  در Controller و Action method را توضیح می دهد.

Identity در سطح Controller

1.	using System;  
2.	using System.Collections.Generic;  
3.	using System.Linq;  
4.	using System.Web;  
5.	using System.Web.Mvc;  
6.	  
7.	namespace NewIdentity.Controllers  
8.	{  
9.	    /// <summary>  
10.	    /// Identity in Contoller Level  
11.	    /// </summary>  
12.	    /// <returns></returns>  
13.	   [Authorize]  
14.	   public class TestController : Controller  
15.	    {  
16.	        // GET: Test  
17.	        public ActionResult Identity()  
18.	        {  
19.	            return Content("با احراز هویت");  
20.	        }  
21.	        public ActionResult NonIdentiy()  
22.	        {  
23.	            return Content("بدون احراز هویت");  
24.	        }  
25.	    }  
26.	}  

اگر شما زمانی که برنامه درحال اجرا است و به طور مستقیم به به آدرس“http://localhost:51868/Test/Identity"   برویم ما را به صفحه ورود هدایت می کند.

پس از وارد کردن نام کاربری و رمز عبور  شما را به صفحه مورد نظر هدایت می کند و به شما اجاز دسترسی با آن را می دهد.

اگر میخواهد به Action Method خاصی Identity نداشته باشد از صفت “AllowAnonymous” استفاده می کنیم .حال به آدرس http://localhost:51868/Test/NonIdentiy میرویم ، مشاهده میکنید که ما را به صفحه ورود هدایت نکرده است .

کد برای Anonymous

1.	namespace NewIdentity.Controllers  
2.	{  
3.	      
4.	    [Authorize]  
5.	    public class TestController : Controller  
6.	    {  
7.	        // GET: Test  
8.	        public ActionResult Identity()  
9.	        {  
10.	            return Content("با احراز هویت");  
11.	        }  
12.	        /// <summary>  
13.	        /// Disable identity to particuler action result  
14.	        /// </summary>  
15.	        /// <returns></returns>  
16.	        [AllowAnonymous]  
17.	        public ActionResult NonIdentiy()  
18.	        {  
19.	            return Content("بدون احراز هویت");  
20.	        }  
21.	    }  
22.	}  

بانک اطلاعاتی در Identity

هنگامی که ما Identity را در ASP.NET MVC پیاده سازی  می کنیم یک Connection به صورت خودکار ایجاد شده و داده ها را در بانک اطلاعاتی ذخیره می کند . میتوان آن را در Web.Config در تگ ConnectionString مشاهد کنیم.

در پوشه App_Data   یک فایل با پسوند “.mdf” ایجاد شده است. زمانی که به پوشه App_Data مراجعه می کنید چیزی مشاهده نمیکنید. برای مشاهده فایل قسمت بالایی  Solution Explorer گزینه Show All Files  را فعال میکنیم حال میتوانیم فایل “.Mdf” را درون پوشه App_Data   مشاهده کنیم.

مانند تصویر زیر:

ما میتوان جدول های درون بانک اطلاعاتی را مشاهده کنیم . برای این کار در منو بالایی صفحه در View ، Server Explorer را انتخاب کنید.

در Server Explorer ، پوشه Table ما جدول های بانک اطلاعاتی را مشاهده می کنید ، جدول “ASP.NET Users”  جدول اصلی ما است که اطلاعات کاربر در آن ذخیره می شود . بر روی ASP.NET User کلیک راست کنید و گزینه New Query را بزنید.

حال ، کوئری Select را مینویسیم و آن را اجرا می کنیم و تمامی اطلاعات را میتوان مشاهده کنیم .

اتصال بانک اطلاعاتی

صفحات با استفاده از Entity Framework   به بانک اطلاعاتی متصل شده اند .  “IdentityConfig.cs” به طور عمده برای احراز هویت است . و آن در پوشه App_Start قرار دارد و کد نویسی های مربوط به پایگاه داده در آن قرار دارد.این کد ها به صورت خودکار تولید می شوند و داخل یک خط مشخص شده قرار دارند ، و همچنین برای اتصال به Entity Framework هستند.

بر روی کلاس ApplicationUser    راست کلیک کنید و گزینه Go To Definition را انتخاب کنید. حال میتوان نام  Connection String  را درون کلاس ApplicationDbContext مشاهده می کنید . در این قسمت ما با استفاده از Connection String به بانک اطلاعاتی متصل می شویم.

آموزش asp.net mvc

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

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

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

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

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