Logowanie do aplikacji ASP.NET MVC

Posted on

Logowanie

Witam

Dzisiaj postanowiłem rozpocząć pracę nad marketingiem własnym. Przymierzałem się do tego przedsięwzięcia od dawna.

Postanowiłem stworzyć aplikację internetową w technologii ASP.NET MVC i opisać ją na blogu. Aplikacja będzie prosta z założenia, jej zadaniem będzie przechowywanie danych o produktach w sklepie internetowym, a być może będzie również w stanie sprzedawać. Zobaczymy jak daleko zajdziemy z projektowaniem.

Dzisiaj prosta sprawa czyli logowanie do aplikacji. Jest to o tyle warte opisania, iż zastosowałem parę autorskich rozwiązań. Zaczynajmy więc.

Całość projektu logowania znajduje się tutaj

Moim zdaniem na uwagę zasługuję część kodu, którą stworzyłem do przekierowywania użytkownika niezarejestrowanego, który chce wywołać akcję z kontrolera, do której nie ma prawa, na stronę logowania

public class CustomAuthorize : AuthorizeAttribute
 {
 protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
 {
 if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
 {
 filterContext.Result = new RedirectToRouteResult(new
 RouteValueDictionary(new { controller = "Home/LogIn" }));

 //filterContext.Result = new HttpUnauthorizedResult();
 }

 }

Zazwyczaj używamy atrybutu [Authorize] w celu zabezpieczenia akcji przed wywołaniem przez użytkownika niezalogowanego, jednak przekierowanie po próbie wywołania żądania nie odpowiadało mi.
Aktualnie wykorzystuję swój atrybut [CustomAuthorize], który przekierowuje mnie do akcji LogIn kontrolera Home.

Kolejnym ważnym krokiem było użycie Bootstrapa 4. W sumie korzystam z tego frameworka od niedawna. Nie zamierzam przepisywać swoich aplikacji do tej wersji, ale zaczynam jej używać w nowych pracach

Mechanizm logowania używa ciasteczka, w celu zapisania sesji użytkownika, by sprawdzać czy użytkownik jest zalogowany. Aplikacja sprawdza również w widokach (razor) czy autentyfikacja przebiegła prawidłowo oraz wyświetla różne linki w zależności od poprawnej autoryzacji czy też błędnej

Dodam, że w dużej mierze korzystałem z tego artykułu 

Aplikacja korzysta z lokalnej bazy danych oraz Entity Frameworka. Musze przyznać, że coraz lepiej wychodzi mi podpinanie EF. Za każdym razem mam błędy, za każdym razem coraz szybciej je rozwiązuje. Cieszę się z tego, gdyż oznacza to, że zdobywam doświadczenie, a poświęcony czas na naukę nie idzie na marne. W tym projekcie również miałem wiele problemów z connection stringami, udało mi się jednak podpiąć do istniejącej bazy danych. Znów nazwa tabeli mnie nie satysfakcjonuje, ale cieszę się, że wszystko działa.

Korzystam z najnowszej wersji Visual Studio czyli 2017 oraz zapewne najnowszego EF.

Na zdjęciu widzimy treść sekretną, która jest widoczna wyłącznie po zalogowaniu do systemu.


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *