آموزش Asp.Net MVC احراز هویت – Authentication

تهران آی تی / برنامــه نویــسـی / آموزش Asp.Net MVC احراز هویت – Authentication

آموزش Asp.Net MVC احراز هویت – Authentication

در آموزش احراز هویت – Authentication در Asp.Net MVC قصد داریم تا کلیه موارد مربوط به بحث Authentication  را به همراه ویدیو آموزشی مورد بحث قرار دهیم. با ما همراه باشید.

Authorize یا محدود کردن Action – Controller  – Area

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

  • محدود کردن Action : محدود کردن یک اکشن بسیار ساده است کافی است در بالای اکشن اتربیوت [Authorize] را اضافه کنید زمانی که این صفت را وارد میکنید کاربران تا زمانی که مجوز نداشته باشند نمیتوانند به این اکشن دسترسی داشته باشند. همچنین این صفت میتواند مقدار Roles را نیز بگیرد که در آن باید مشخص کنیم تا چه نقشی اجازه دسترسی به این اکشن را دارد.

[Authorize]
or
[Authorize(Roles ="Admin")]

  • محدود کردن Controller : محدود کردن یک Controller بسیار ساده است کافی است در بالای Controller اتربیوت [Authorize] را اضافه کنید زمانی که این صفت را وارد میکنید کاربران تا زمانی که مجوز نداشته باشند نمیتوانند به این Controller و اکشن های آن دسترسی داشته باشند. همچنین این صفت میتواند مقدار Roles را نیز بگیرد که در آن باید مشخص کنیم تا چه نقشی اجازه دسترسی به این Controller و اکشن های آن را دارد.

[Authorize]
or
[Authorize(Roles ="Admin")]

  • محدود کردن Area : برای محدود کردن یک Area به فایل Web.config میرویم. داخل تگ configuration تگ Location را اضافه میکنیم صفت Path را به آن اضافه میکنیم مقدار آن دقیقا باید هم نام Area باشد. تگ system.web را مشخص میکنیم و در داخل آن تگ authorization را وارد میکنیم و مشخص میکنیم این Area نیاز به اهراز هویت دارد و در داخل آن میتوانیم از تگ deny  و یا allow استفاده کنیم مثلا <deny users=”?”/> یعنی هیچ کاربری اجازه دسترسی ندارد تا زمانی که مجوز بگیرد.

<location path="Admin">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>

مثال : فقط کاربرانی با نقش Admin و Editor قابلیت دسترسی داشته باشند. و بقیه کاربران با هر نقشی دسترسی نداشته باشند. عنصر Allow بیان می‌کند که نقش‌های Admin و Editor مجاز هستند. عنصر Deny دستور می دهد که همه کاربران غیر مجاز شوند.

علامت سوال ? کاربران ناشناس را رد می کند و ستاره * نشان می دهد که همه حساب های کاربری دسترسی ندارند.

<authorization>
<allow roles="Admin, Editor" />
<deny users="*" />
</authorization>

تنظیمات Authentication

تا اینجای کار توانستیم Action – Controller  – Area های مد نظر خود را Authorize کنیم و اجازه دسترسی را از آنها گرفتیم حلا توسط Authentication باید نوع و آدرس و تنظیمات دیگر Authentication را مشخص کنیم به زبان ساده مشخص کنیم کاربر از چه طریقی و از چه آدرسی احراز هویت کند.

  • به صفحه WebConfig و تگ system.web بروید، WebConfig اصلی پروژه چون ممکن است بعد ها پروژه های دیگر و یا Location های دیگری به پروژه اضافه شود که خود دارای WebConfig و Location های مجزا باشند.
  • سپس تگ Authorize را اضافه کنید و به آن صفت mode را اضافه کنید. نوع احراز هویت ما از نوع Forms میباشد یعنی از طریق یک Form احراز هویت انجام میشود.
  • چون احراز هویت ما از نوع Forms است پس یک تگ Forms  ایجاد میکنیم.

name : باید یک نام منحصر به فرد باشد چون این name دقیقا نام کوکی ای میباشد که قرار است ذخیره شود.

loginUrl : اگر سیستم کاربری را بخواهد از صفحه ای بیرون بیندازد به این صفحه هدایت میکند.

defaultUrl : بعد از لاگین کاربر به این آدرس هدایت میشود.

timeout  : مدت زمان نگداری کوکی است مثلا اگر بخواهیم ۱۵ روز کوکی نگهداری شود مقدار ۱۵*۲۴*۶۰ که برابر با ۲۱۶۰۰ میباشد را وارد میکنیم. توجه داشته باشید که مقدار آن به دقیقه میباشد.

<authentication mode="Forms">
<forms name="TehranIt" loginUrl="/Account/Login" defaultUrl="/" timeout="21600" protection="All"></forms>
</authentication>

ایجاد ViewModel برای صفحه لاگین

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

  • فیلد RememberMe برای ذخیره اطلاعات نام کاربری و رمزعبوز
  • فیلد ReturnUrl آخرین صفحه ای که قبل از لاگین داخل آن بوده ایم.

همچنین برای نام کاربری از ایمیل استفاده میکنیم.

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Xml.Linq;
namespace Area.Models.ViewModels
{
public class LoginViewModel
{
[Display(Name = "ایمیل")]
[Required(ErrorMessage = "فیلد {۰} نباید خالی باشد.")]
[EmailAddress(ErrorMessage = "قالب {۰} اشتباه است")]
[MaxLength(100)]
public string Email { get; set; }
[Display(Name = "رمز عبور")]
[Required(ErrorMessage = "فیلد {۰} نباید خالی باشد.")]
[StringLength(13, MinimumLength = 5, ErrorMessage = "تعداد کاراکتر ها نباید کمتر از ۵ و بیشتر از ۱۳ باشد")]
[DataType(DataType.Password)]
[MaxLength(100)]
public string Password { get; set; }
[Display(Name = "مرا به خاطر بسپار")]
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }

}
}

اکشن های مربوط به صفحه لاگین

public ActionResult Login(string ReturnUrl="/")
{
LoginViewModel loginViewModel = new LoginViewModel();
loginViewModel.ReturnUrl = ReturnUrl;
return View(loginViewModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login([Bind(Include = "Email,Password,RememberMe,ReturnUrl")] LoginViewModel LoginUser)
{
if(ModelState.IsValid)
{
User user= new User();
user = db.Users.Where(t=> t.Email == LoginUser.Email && t.Password==LoginUser.Password).FirstOrDefault();
if (user == null)
{
ModelState.AddModelError("LoginError", "نام کاربری یا رمز عبور اشتباه است");
return View();
}
FormsAuthentication.SetAuthCookie(LoginUser.Email, LoginUser.RememberMe);
return Redirect(LoginUser.ReturnUrl);
}
return View();
}

اکشن مربوط به Logout

[Authorize]
public ActionResult Logout()
{
FormsAuthentication.SignOut();
return Redirect("/");
}

لینک دانلود پروژه در Github

https://github.com/ahadian2/Autentication

جستجو کنید

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد