Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 15478|Svar: 0

[ASP.NET] Bruger- og rolleautentificering baseret på FormsAuthentication

[Kopier link]
Opslået på 19/07/2018 17.31.14 | | |
Under normale omstændigheder, når vi laver adgangsrettighedsstyring, gemmer vi brugerens grundlæggende information efter korrekt login i sessionen og får dem hver gang brugeren anmoder om side- eller interfacedata i fremtiden

Session for at se og sammenligne, om han er logget ind, og om han kan få adgang til den aktuelle side.

       Princippet i Session er at generere et SessionID på serversiden, der svarer til de lagrede brugerdata, og SessionID'et gemmes i en cookie, og klienten bærer dette med sig hver gang det anmodes om

Cookie, serveren finder de data, der er gemt på serversiden, baseret på sessions-ID'et i cookien.

       FormsAuthentication stilles til rådighed af Microsoft for os udviklere, som kan bruge dem til autentificering. Gennem denne autentificering kan vi gemme brugernavnet og nogle brugerdata i cookies,

Grundlæggende identitets- og rolleautentificering kan nemt opnås gennem grundlæggende betingelsesindstillinger.

       Effekten, der opnås her, er at implementere rollebaseret adgangskontrol ved hjælp af den system-leverede Authorize uden at bruge medlemskab.

1. Opret en sag

Efter brugeren logger ind, gemmes brugerens ID og tilsvarende rolle (for flere roller, adskilt) i ticketen.

Krypter billetten med FormsAuthentication.Encrypt.

Gem den krypterede ticket i Response-cookien (klienten js behøver ikke at læse denne cookie, så det er bedst at sætte HttpOnly=True for at forhindre browserangreb i at stjæle og forfalske cookies). På den måde kan du læse det fra Request-cookien næste gang.

En simpel demo er som følger:


bool isPersistent, //if to persist (sæt efter behov, hvis sat til persistence, skal Udløbsindstillingen af cookien være sat ved afsendelse af en cookie)

Den sjette parameter i FormsAuthenticationTicket gemmer userData af typestrengen, hvor rolle-ID'et for den aktuelle bruger gemmes, adskilt af et komma.

Når man logger ind med brugernavnet "test", vises der en log-cookie på klienten


2. Indhent certificeringsoplysninger

Efter at have logget ind kan vi på indholdssiden hente uname-informationen via User.Identity.Name af den aktuelle anmodning, eller vi kan dekryptere cookien i anmodningen for at få ticketen, og derefter hente uname og brugerdata (altså de tidligere gemte rolle-ID-oplysninger) derfra.


3. Realiser adgangskontrol via annotationsattributter

Konfigurér Aktiver formularautentificering og rollestyring i web.config

Når vi tilføjer annotationsegenskaber til Controller og Handling, hvor får vi så sættet Role fra? Da vi ikke bruger medlemskabsbaseret autentificering, vil vi også oprette en brugerdefineret RoleProvider. Navnet er CustomRoleProvider, som er arvet fra RoleProvider. Her er oprettelsen af din egen CustomRoleProvider.cs-fil i Helper-mappen under MVCApp.

Der findes mange abstrakte metoder i RoleProvider, og vi implementerer kun GetRolesForUser-metoden for at få brugerroller. Brugerrollen her kan forespørges fra databasen i henhold til det opnåede bruger-ID eller det, der er gemt i sessionen eller i cookien. Her har jeg allerede gemt rollen i brugerData for ticketen, så lad os hente den fra ticketen.

Hvis nødvendigt, tilføj annoteringsattributter til den validerede Controller eller Handling, for eksempel tillader denne handling kun adgang med et RoleID på 1, 2 eller 3, og den nuværende brugers RoleID er (7, 1, 8), hvilket betyder, at brugeren har ret til adgang.

P.S. :1. Ticket gemmes ved cookie-udløbstidspunktet, og hvis browseren er lukket for at huske den aktuelle ticket, kan parametrene indstilles, når FormsAuthenticationTicket instansieres.

2. Erhvervelsen af Role kan læses direkte fra databasen uden at være gemt i brugerData i ticketen, og userData kan gemme anden information.

3. Hvis du vil konfigurere controlleren og handlingens tilladte adgangsroller fleksibelt, kan du tilpasse OnAuthorization-metoden i AuthorizeAttribut-overridet, hvor metoden bruges

      Læs det rolle-ID, der er tilladt på den nuværende side, og tjek det i henhold til den nuværende brugers RoleID. På denne måde realiseres den fleksible konfiguration af rollen.

            4. Oplysningerne i ticketen gemmes i sidste ende i cookien, og sikkerheden er stadig op til dig selv; jeg synes personligt, det er bedre at gemme UserID og RoleID i sessionen.





Tidligere:Baidu-kort: Løs punktaggregeringsmarkør-lag-løsningen
Næste:Rekrutter tekniske partnere
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com