2012-08-25 5 views
8

Ich arbeite an einer Website, die die Formularauthentifizierung verwendet. Ich war daran interessiert, wie das Authentifizierungssystem funktionierte, da, wenn ich anfänglich irgendeine Seite in der Site öffne, es mich zu einem Login umleitet, und keiner der Controller/Aktionen eine Autorisierungslogik hat, die in ihnen platziert ist.ASP.NET MVC Forms-Authentifizierung - Wie funktioniert es und beharrt Authentifizierung?

  • Über die unten stehende Konfiguration bestimmt MVC oder ASP.NET automatisch, ob Sie authentifiziert sind? (Wie ich bereits sagte, gibt es in den Controllern keinen Code zum "Umleiten" oder stellen Sie sicher, dass der Benutzer autorisiert ist.
  • Wenn ASP.NET dies behandelt, in welchen Situationen müssen Sie Ihre Aktionen/Controller autorisieren ? (dh [autorisieren] Attribut)
  • Wie funktioniert die Formularauthentifizierung Arbeit ich bin besonders daran interessiert, wie die "Zulassung" beibehalten wird (dh Cookies ??)

Webseiten web.config Technologie:? MVC 3, Entity Framework 4.1 (Code zuerst), ASP.NET 4

<configuration> 
<system.web> 
     <authentication mode="Forms"> 
      <forms loginUrl="~/Account/Index" timeout="2880" /> 
     </authentication> 

     <membership defaultProvider="CodeFirstMembershipProvider"> 
      <providers>c 
      <clear /> 
      <add name="CodeFirstMembershipProvider" type="Vanguard.AssetManager.Services.Security.MembershipService" applicationName="/" /> 
      </providers> 
     </membership> 

     <roleManager enabled="true" defaultProvider="CodeFirstRoleProvider"> 
      <providers> 
      <clear /> 
      <add name="CodeFirstRoleProvider" type="Vanguard.AssetManager.Services.Security.RoleService" applicationName="/" /> 
      <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
      </providers> 
     </roleManager> 

     </system.web> 

     <location path="Admin"> 
     <system.web> 
      <authorization> 
      <allow roles="Admin" /> 
      <deny users="*" /> 
      </authorization> 
     </system.web> 
     </location> 


     <location path="Content/packages"> 
     <system.web> 
      <authorization> 
      <allow roles="Admin" /> 
      <deny users="*" /> 
      </authorization> 
     </system.web> 
     </location> 

     <location path="Home"> 
     <system.web> 
      <authorization> 
      <deny users="?" /> 
      </authorization> 
     </system.web> 
     </location> 

     <location path="CheckIn"> 
     <system.web> 
      <authorization> 
      <allow roles="CheckIn, Admin" /> 
      <deny users="*" /> 
      </authorization> 
     </system.web> 
     </location> 

     <location path="Assignment"> 
     <system.web> 
      <authorization> 
      <allow roles="Assignment, Admin" /> 
      <deny users="*" /> 
      </authorization> 
     </system.web> 
     </location> 
<configuration> 

Die Website verwendet MVC-Bereiche, von denen ich annehme, worauf sich der Abschnitt bezieht.

Antwort

8

Über die folgende Konfiguration bestimmt MVC oder ASP.NET automatisch , ob Sie authentifiziert sind? (Wie ich schon sagte, gibt es keinen Code in die Regler auf „umleiten“ oder stellen Sie sicher, dass der Benutzer autorisiert.

Ja, es nutzt die <location> Abschnitt in Ihrer web.config nur Benutzer zu ermöglichen, haben die Admin-Rolle die /Admin/* Pfad zuzugreifen.

Wenn ASP.NET diese Griffe, in welchen Situationen brauchen Sie Ihre Aktionen/Controller? (dh [autorisieren] Attribut)

zu genehmigen

In ASP.NET MVC mit dem Attribut [Authorize] ist die bevorzugte Methode zu steuern, welche Aktionen benötigen Autorisierung anstelle der Verwendung des Tags <location> in Ihrer web.config wie Sie getan haben. Der Grund dafür ist, dass ASP.NET MVC Routing verwendet und Sie keine Pfade in Ihrer web.config fest codieren sollten, was mit dem Abschnitt <location> passiert. Verwenden Sie daher immer das Attribut [Authorize], um Controller/Aktionen zu dekorieren, die eine Authentifizierung erfordern.

Wie funktioniert die Formularauthentifizierung? Ich bin besonders daran interessiert, wie die "Autorisierung" beibehalten wird? (d. h. Cookies?)

Cookies, ja. Sie könnten auch die following article auf MSDN auschecken, die erklärt, wie die Formularauthentifizierung funktioniert.