Microsoft jakiś czas temu udostępnił bardzo fajną promocję: płacąc za 1 egzamin możemy zdawać aż 3. Czasu nie pozostało wiele - promocja kończy się końcem maja 2014.
Jeżeli ktoś jest zainteresowany więcej szczegółów można znaleźć na stronie http://borntolearn.mslearn.net/btl/b/veronica/archive/2013/11/01/t-and-c-for-developer-exam-offer-2013.aspx#fbid=P7LajA7aSYu
Warto skorzystać zwłaszcza w takiej cenie :)
poniedziałek, 3 marca 2014
piątek, 28 lutego 2014
Autoryzacja w MVC 5 - ASP.NET Identity
Kiedyś pisałem o MVC 2 później 3, 4 a teraz przyszedł czas na nowości dotyczące 5 wersji frameworka. Wraz z MVC wypuszczono także nową bibliotekę pozwalającą autoryzować użytkowników - Microsoft Identity. Ma ona za zadanie zastąpić przestarzały MembershipProvider i nie końca udany SimpleMembership.
Co tym razem przygotował Microsoft? Możliwości ASP.NET Identity:
Schemat bazy ASP.NET Identity przedstawia się następująco:
Dużo przyjemniejszy niż w przypadku starego MembershipProvidera. Dodawanie nowych kolumn i informacji o użytkowniku też nie sprawia problemów:
Wystarczy zlokalizować klasę IdentityUser i dodać w niej nowe pole:
Jeżeli korzystamy z mechanizmu automatycznych migracji, wystarczy że utworzymy migrację i uaktualnimy bazę danych.
Projekt domyślnie tworzy szablonowe widoki tworzenia i modyfikowania danych użytkownika. Dostajemy gotowe klasy modeli. Jedynie co brakuje to metod odpowiedzialnych za widoki. Jeżeli chcemy użyć innej klasy (np. już istniejącej w systemie) do przechowywania informacji o użytkowniku, wystarczy że zaimplementujemy interfejs IUser:
Jak widać Id użytkownika przetrzymywane jest tutaj jako pole typu string - i takiego też typu jest domyślnie tworzone w bazie danych. Czy to dobre rozwiązanie? Moim zdaniem nie do końca. Dużo lepszym rozwiązaniem byłoby pozwolenie deweloperowi wybrania czy Id ma być łańcuchem, Guidem czy też liczbą. W nowej wersji frameworka (beta) poprawiono tę niedogodność.
Co tym razem przygotował Microsoft? Możliwości ASP.NET Identity:
- łatwe dodawanie dodatkowych informacji do profilu użytkownika
- domyślnie użycie Entity Framework jako ORM
- kontrola zapisu (możliwość wyboru czy dane mają zostać zapisane w SQL Azure, MS SQL, NOSQL itp)
- wsparcie dla TDD dzięki dużo lepszej architekturze frameworka
- wsparcie dla ról w aplikacji
- system nadawania praw do poszczególnych aspektów aplikacji
- zewnętrzna autoryzacja (Facebook, Twitter itp)
Schemat bazy ASP.NET Identity przedstawia się następująco:
Dużo przyjemniejszy niż w przypadku starego MembershipProvidera. Dodawanie nowych kolumn i informacji o użytkowniku też nie sprawia problemów:
Wystarczy zlokalizować klasę IdentityUser i dodać w niej nowe pole:
Code:
using System; using Microsoft.AspNet.Identity.EntityFramework; namespace AuthorizationSample.Models { // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. public class ApplicationUser : IdentityUser { public DateTime? BirthDate { get; set; } public string City { get; set; } } public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DefaultConnection") { } } }
Jeżeli korzystamy z mechanizmu automatycznych migracji, wystarczy że utworzymy migrację i uaktualnimy bazę danych.
Projekt domyślnie tworzy szablonowe widoki tworzenia i modyfikowania danych użytkownika. Dostajemy gotowe klasy modeli. Jedynie co brakuje to metod odpowiedzialnych za widoki. Jeżeli chcemy użyć innej klasy (np. już istniejącej w systemie) do przechowywania informacji o użytkowniku, wystarczy że zaimplementujemy interfejs IUser:
Code:
public interface IUser { /// <summary> /// Unique key for the user /// </summary> /// /// <returns> /// The unique key for the user /// </returns> string Id { get; } string UserName { get; set; } }
Jak widać Id użytkownika przetrzymywane jest tutaj jako pole typu string - i takiego też typu jest domyślnie tworzone w bazie danych. Czy to dobre rozwiązanie? Moim zdaniem nie do końca. Dużo lepszym rozwiązaniem byłoby pozwolenie deweloperowi wybrania czy Id ma być łańcuchem, Guidem czy też liczbą. W nowej wersji frameworka (beta) poprawiono tę niedogodność.
Kod bibliotek .NET Online
Microsoft udostępnił nową wersję portalu umożliwiającego przeglądanie kodu bibliotek .NET.
Dostęp do narzędzia dostępny jest pod adresemhttp://referencesource-beta.microsoft.com/
Narzędzie jest proste w użyciu, nawigacja nie sprawia problemów. Wygląd, kolorowanie i podział na "Solution Explorer" dodatkowo uprzyjemnia przeglądanie.
W przypadku braku dostępu do narzędzi typu Reflector czy ILSpy świetnie się sprawdzi w celu szybkiego prześledzenia kodu w bibliotece .NET.
Dostęp do narzędzia dostępny jest pod adresemhttp://referencesource-beta.microsoft.com/
Narzędzie jest proste w użyciu, nawigacja nie sprawia problemów. Wygląd, kolorowanie i podział na "Solution Explorer" dodatkowo uprzyjemnia przeglądanie.
W przypadku braku dostępu do narzędzi typu Reflector czy ILSpy świetnie się sprawdzi w celu szybkiego prześledzenia kodu w bibliotece .NET.
Subskrybuj:
Posty (Atom)