ASP.NET MVC Web Development ASP.NET Identity | www.starwave.nl/mq
Vandaag Het registratie- en loginsysteem uitbreiden Een eerste versie van onze site
ASP.NET Identity Is het framework voor gebruikersauthenticatie en autorisatie. Zit in de standaard MVC template Is ook achteraf toe te voegen via NuGet (maar dan moet je nog zelf alle views & controllers toevoegen)
Waarom Identity? Voorgaande systemen waren Te ingewikkeld Óf Niet flexibel genoeg Wat is er mogelijk met identity?
Waarom Identity? Inloggen via: Eigen username/password Oauth/OpenID (google, facebook, twitter etc.) Active Directory Azure Active Directory Office 365
Waarom Identity? Identity ondersteund claims-based autorisatie. Je kunt als key-value pairs gegevens koppelen aan een useraccount, bijvoorbeeld een facebook access token waarmee je foto’s uit het FB profiel van de gebruiker mag laden. Claims-based is flexibeler dan role-based. Maar we hebben het nog niet nodig. https://docs.asp.net/en/latest/security/authorization/claims.html
Claims based Geld op mogen nemen van rekening X Reizen binnen EU Internationaal reizen Door horizon poortjes mogen if 18+ mogen stemmen = true
Hoe werkt identity Identity core classes + Implementation classes Voorbeeld: Bewaart de gegevens voor je in een database via Entity Framework.
Welke classes kom je tegen IdentityUser (IUser) EmailService, SmsService (IIdentityMessageService) SigninManager ApplicationUserManager RoleManager UserStore RoleStore
Aanpassen App_Start/IdentityConfig.cs bevat de instellingen van Identity. Je kunt hier bijvoorbeeld: 2-factor authentication implementeren Eisen aan wachtwoorden aanpassen
Aanpassen Models/IdentityModels.cs bevat de ApplicationUser class. Deze kunnen we naar onze wensen uitbreiden met properties. Let op: Zodra je ApplicationUser koppelt aan andere Model classes (bijv. een Profile class) is het handig als deze in dezelfde DbContext zitten. Gebruik dan ook de standaard ApplicationDbContext.
Aanpassen In Models/AccountViewModels.cs vind je ViewModels Registratiepagina aanpassen Als je extra properties toevoegt aan ApplicationUser die moeten worden ingevuld bij registratie, moeten deze ook in RegisterViewModel komen. Daarnaast plaats je ze ook in Views/Account/Register.cshtml.
Aanpassen Controllers/AccountControllers.cs bevat alle controller logica voor Identity. Bewerk hier de Register method om nieuwe properties ook echt te bewaren in de database.
Gebruiker ophalen Als je de huidige gebruiker op wilt halen heb je wat code nodig: var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db)); var currentUser = manager.FindById(User.Identity.GetUserId()); Nu bevat currentUser het ApplicationUser object (dat je als het goed is ook gekoppeld hebt aan profielgegevens).
Todo Zorg voor volgende week woensdag dat: Gebruikers kunnen registreren en inloggen op je site. Het mogelijk is een eigen profiel in te zien en te bewerken, met eigenschappen. Tijd over? Werk dan aan de vormgeving van je website.