MVC levereras med ett ActionFilter För att uppnå identitetsautentisering i Asp.NET WebForm erbjuder Microsoft oss tre sätt, varav det vanligaste är vår formulärautentisering, som måste konfigureras med motsvarande information. Till exempel följande konfigurationsinformation:
Det betyder att vår inloggningssida är Login.aspx, standardsidan efter lyckad inloggning är Default.aspx, och vår användarinformation använder två metoder: verifiering och kryptering. Och det viktigaste är att vi måste skriva behörighetsmetoden (auktorisationen nedan måste skrivas, annars är det meningslöst att bara använda formulärautentisering och sedan sätta relevanta attribut), neka alla anonyma användare, och endast inloggade användare kan komma åt som vanligt. Efter det ställer vi in inloggningsknappen för att skriva användarnamnet i cookien (det vill säga köra FormsAuthentication.SetAuthCookie(name, false); Det är allt. 0 I Asp.Net MVC kan vi också använda formulärautentisering, men om du gör det i WebForm fungerar det inte. Till exempel konfigurerar du informationen så här:
Du sätter in en inloggning i din Login.aspx för att trigga Login-inloggning i AccountController, där inloggningskoden:
Efter att ha gjort detta kommer du att upptäcka att din inloggning inte kommer att köras. Vad är anledningen? Varför fungerar inte samma inställning i MVC? Anledningen är att mekanismen är annorlunda, eftersom du sätter upp en auktorisationsmetod som gör Logon otillgängligt. Så hur gör vi det? Faktum är att vi i Asp.Net MVC har ett bättre sätt att göra allt detta, vi behöver ingen auktoriseringsmetod, vilket innebär att vår konfigurationsinformation ser ut så här:
Det finns inget behov av att specificera att anonyma användare inte kan logga in, etc. Självklart kommer du att upptäcka att det inte räcker att bara göra detta, men vi måste tala om för systemet vilka som behöver loggas in för att komma åt. Du kanske tänker, o()〈))o Åh, det är för mycket besvär. Det är inte så, det är väldigt enkelt, vi behöver bara markera [Auktorisera] på den handling som behöver autentiseras. Till exempel har jag två sidor i hemmappen, Index och Home, och jag vill att indexet ska autentiseras för åtkomst, men det gör inte Home, så jag behöver bara ge indexet åtgärdstaggen [Authorize], det vill säga:
Detta gör att Index kan nås efter inloggning, medan Home inte behöver vara inloggad. Om du behöver auktorisera roller kan du specificera rollen när du markerar Auktorisera (t.ex. [Authorize(Role=Administrators)]), men du måste använda medlemskapsmekanismen som Microsoft tillhandahåller, eftersom din roll inte kan existera gratis, utan finns i motsvarande databas, som jag nämnde i en annan blogg. Anpassa ActionFilter Ibland kan du inte uppfylla denna typ av autentisering, eller om du känner att du inte är tillräckligt flexibel spelar det ingen roll, Asp.Net MVC låter dig anpassa ditt ActionFilter. Till exempel anpassar jag nu autentiseringen:
Om användarhantering krävs kommer jag att definiera de rollrelaterade filtren:
Faktum är att du kommer att upptäcka att ovanstående två attribut faktiskt har lösts av MVC:s inbyggda auktoriserade, och här säger vi främst att du kan utöka det om det behövs. Nåväl, det var allt för idag! Källkodsnedladdning: FormsAuthenticationMvc
|