MVC leveres med et ActionFilter For å oppnå identitetsautentisering i Asp.NET WebForm, gir Microsoft oss tre metoder, hvorav den mest brukte er vår skjemaautentisering, som må konfigureres med tilsvarende informasjon. For eksempel, følgende konfigurasjonsinformasjon:
Det betyr at innloggingssiden vår er Login.aspx, standardsiden etter vellykket innlogging er Default.aspx, og brukerinformasjonen vår benytter to metoder: verifisering og kryptering. Og det viktigste er at vi må skrive autorisasjonsmetoden (autorisasjonen nedenfor må skrives, ellers er det nytteløst å kun bruke skjemaautentisering og deretter sette relevante attributter), nekte alle anonyme brukere, og kun innloggede brukere kan få tilgang normalt. Etter det setter vi innloggingsknappen til å skrive brukernavnet inn i informasjonskapselen (det vil si kjøre FormsAuthentication.SetAuthCookie(name, false); Det er det. 0 I Asp.Net MVC kan vi også bruke skjemaautentisering, men hvis du gjør det i WebForm, vil det ikke fungere. For eksempel konfigurerer du informasjonen slik:
Du setter opp en innlogging i Login.aspx din for å utløse Login-en i AccountController for å logge inn, hvor påloggingskoden:
Etter å ha gjort dette, vil du oppdage at innloggingen din ikke blir utført. Hva er grunnen? Hvorfor fungerer ikke samme innstilling i MVC? Grunnen er at mekanismen er annerledes, fordi du setter opp en autorisasjonsmetode som gjør Logon utilgjengelig. Så hvordan gjør vi det? Faktisk har vi i Asp.Net MVC en bedre måte å gjøre alt dette på, vi trenger ikke en autorisasjonsmetode, noe som betyr at konfigurasjonsinformasjonen vår ser slik ut:
Det er ikke nødvendig å spesifisere at anonyme brukere ikke kan logge inn, osv. Selvfølgelig vil du oppdage at det ikke er nok bare å gjøre dette, men vi må fortelle systemet hvilke som må logges inn for å få tilgang. Du tenker kanskje, o()〈))o Åh, det er for mye bryderi. Det er ikke slik, det er veldig enkelt, vi trenger bare å markere [Autoriser] på handlingen som må autentiseres. For eksempel har jeg to sider i Home-mappen, Index og Home, og jeg vil at Index skal være autentisert for tilgang, men Home har ikke det, så jeg trenger bare å gi Index handlingstaggen [Authorize], det vil si:
Dette gjør at Index kan nås etter innlogging, mens Home ikke trenger å være logget inn. Hvis du trenger å autorisere roller, kan du spesifisere rollen når du markerer Autoriser (f.eks. [Authorize(Role=Administrators)]), men du må bruke medlemskapsmekanismen som Microsoft tilbyr, fordi rollen din ikke kan eksistere uten grunn, men finnes i den tilsvarende databasen, som jeg nevnte i en annen blogg. Tilpass ActionFilter Noen ganger kan det hende du ikke oppfyller denne typen autentisering, eller hvis du føler at du ikke er fleksibel nok, spiller det ingen rolle, Asp.Net MVC lar deg tilpasse ActionFilter. For eksempel tilpasser jeg nå autentisering:
Hvis brukerstyring er nødvendig, vil jeg definere rolle-relaterte filtre:
Faktisk vil du oppdage at de to ovennevnte attributtene faktisk er løst av MVCs innebygde autoriserte, og her forteller vi deg hovedsakelig at du kan utvide det om nødvendig. Vel, det var alt for i dag! Kildekode nedlasting: FormsFormsAuthenticationMvc
|