BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Baza wiedzy











ASP.NET Identity - wprowadzenie cz. 3

03-09-2014 07:00 | Krzysztof Pruszyński
Technologia ASP.NET Identity zostało]a pierwszy raz użyta w Visual Studio 2013 w szablonach projektów ASP.NET MVC, Web Form, Web API oraz SPA. W tym artykule zobaczymy jak szablony projektów korzystają ASP.NET Identity w celu dodawania funkcji rejestracji i uwierzytelniania użytkownika.

Technologia ASP.NET Identity zostało]a pierwszy raz użyta w Visual Studio 2013 w szablonach projektów ASP.NET MVC, Web Form, Web API oraz SPA. W tym artykule zobaczymy jak szablony projektów korzystają ASP.NET Identity w celu dodawania funkcji rejestracji i uwierzytelniania użytkownika.


Zaczynamy: ASP.NET Identity

ASP.NET Identity jest zaimplementowana za pomocą poniższej procedury. Celem niniejszego artykułu jest przegląd możliwości ASP.NET Identity. Możesz go prześledzić krok po kroku lub po prostu przeczytać szczegóły.

Informacja

Po bardziej szczegółowe instrukcje dotyczące tworzenia aplikacji z użyciem ASP.NET Identity (w tym używanie nowego API dodawania użytkowników, ról i informacji o profilu) możecie znaleźć pod tym linkiem: http://www.asp.net/identity/overview/getting-started

 

  1. Stwórz projekt aplikacji ASP.NET MVC z użyciem Individuals Accounts (ramka dot. Authentication). Możesz również to samo zrobić przy tworzeniu Web Forms, SignalR itp. W tym konkretnym przypadku pracujemy z aplikacją MVC( Rys. 1 Kreator projektu aplikacji MVC).

 

Rys. 1 Kreator projektu aplikacji MVC

 

  1. Stworzony projekt zawiera następujące pakiety ASP.NET Identity:

Ta paczka zawiera implementację ASP.NET Identity dla Entity Framework, która jest odpowiedzialna za zarządzanie danymi ASP.NET Identity oraz schematem SQL Server,

Ta paczka zawiera podstawowe interfejsy ASP.NET Identity. Paczka może zostać użyta aby stworzyć implementacje ASP.NET Identity służące do obsługi różnych źródeł danych takich jak np. Azure Table Storage, bazy NoSQL itp.,

Ta paczka zawiera funkcjonalność odpowiadającą za obsługę uwierzytelniania OWIN dla aplikacji ASP.NET. Używamy jej kiedy dodajemy funkcjonalność logowania do naszej aplikacji aby używała warstwy pośredniczącej – OWIN Cookie Authentication do wygenerowania odpowiednich cookie.

  1. Tworzenie użytkownika.

Uruchom aplikację i kliknij link rejestracji aby utworzyć użytkownika. Następujący obrazek (Rys. 2 Strona rejestracji) pokazuje stronę rejestracji która wymaga tylko loginu i hasła:

 

Rys. 2 Strona rejestracji

 

Kiedy użytkownik kliknie przycisk rejestracji, to akcja Register z kontrolera Account stworzy użytkownika wywołując ASP.NET Identity API, które zostało podkreślone poniżej:

[HttpPost]

[AllowAnonymous]

[ValidateAntiForgeryToken]

public async Task<ActionResult> Register(RegisterViewModel model)

{

   if (ModelState.IsValid)

   {

       var user = new ApplicationUser() { UserName = model.UserName };

       var result = await UserManager.CreateAsync(user, model.Password);

       if (result.Succeeded)

       {

           await SignInAsync(user, isPersistent: false);

           return RedirectToAction("Index", "Home");

       }

       else

       {

           AddErrors(result);

       }

   }

 

   // If we got this far, something failed, redisplay form

   return View(model);

  1. Zalogowanie się

Jeżeli rejestracja przebiegła pomyślnie, użytkownik zostaje zalogowany poprzez metodę SignInAsync:

[HttpPost]

[AllowAnonymous]

[ValidateAntiForgeryToken]

public async Task<ActionResult> Register(RegisterViewModel model)

{

   if (ModelState.IsValid)

   {

       var user = new ApplicationUser() { UserName = model.UserName };

       var result = await UserManager.CreateAsync(user, model.Password);

       if (result.Succeeded)

       {

           await SignInAsync(user, isPersistent: false);

           return RedirectToAction("Index", "Home");

       }

       else

       {

           AddErrors(result);

       }

   }

 

   // If we got this far, something failed, redisplay form

   return View(model);

}

 

private async Task SignInAsync(ApplicationUser user, bool isPersistent)

{

   AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);

 

   var identity = await UserManager.CreateIdentityAsync(

       user, DefaultAuthenticationTypes.ApplicationCookie);

 

   AuthenticationManager.SignIn(

       new AuthenticationProperties() {

         IsPersistent = isPersistent

       }, identity);

}

 

Zaznaczony kod powyżej w metodzie SignInAsync generuje ClaimsIdentity. Ponieważ ASP.NET Identity i OWIN Cookie Authentication są oparte o system praw (claims-based), platforma wymaga od aplikacji aby wygenerowała ClaimsIdentity dla użytkownika. Informacja ClaimsIdentity posiada informację o tzw. „prawach” użytkownika, między innymi czy i jakie ma przypisane role . Możemy także dodać więcej takich informacji na temat użytkownika na tym etapie pisania kodu.

Wyróżniony poniższy kod w metodzie SignInAsync autoryzuje użytkownika poprzez użycie AuthenticationManager przy użyciu OWIN i wywołuje metodę SignIn i przekazuje ją do ClaimsIdentity:

private async Task SignInAsync(ApplicationUser user, bool isPersistent)

{

   AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);

 

   var identity = await UserManager.CreateIdentityAsync(

       user, DefaultAuthenticationTypes.ApplicationCookie);

 

   AuthenticationManager.SignIn(

       new AuthenticationProperties() {

         IsPersistent = isPersistent

       }, identity);

}

  1. Wylogowanie się

Kliknięcie przycisku wylogowania wywołuje akcję LogOff z kontrolera Account:

// POST: /Account/LogOff

[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult LogOff()

{

   AuthenticationManager.SignOut();

   return RedirectToAction("Index", "Home");

}

 

Zaznaczone powyżej linijka kodu pokazuje metodę OWIN AuthenticationManager.SignOut. Jest ona analogiczna do metody FOrmsAuthentication.SIgnOut używana przez moduł FormsAuthentication w Web Forms.


Podsumowanie

Na koniec mamy nadzieję opublikować przewodnik migracji z istniejących już aplikacji które używają ASP.NET Membership lub Simple Membership, na ASP.NET Identity. Po więcej zapraszamy na stronę:

http://www.asp.net/identity/overview/getting-started

Źródło: http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity

Komentarze 0

pkt.

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.