2012-08-25 13 views
8

Sto lavorando su un sito che utilizza l'autenticazione basata su form. Ero interessato a come funzionava il sistema di autenticazione, dal momento che quando inizialmente apro una pagina nel sito, mi reindirizza a un login, e nessuno dei controller/azioni ha alcuna logica di autorizzazione inserita in essi.ASP.NET MVC Autenticazione moduli - Come funziona e persiste l'autenticazione?

  • Tramite la configurazione di seguito, MVC o ASP.NET determinano automaticamente se si è autenticati? (Come ho detto, non c'è alcun codice nei controller per "reindirizzare" o assicurarsi che l'utente sia autorizzato
  • Se ASP.NET gestisce questo, in quali situazioni è necessario autorizzare le azioni/i controller? vale a dire [Autorizza] attributo)
  • Come funziona l'autenticazione basata su form sono particolarmente interessato a come l ' "autorizzazione" viene mantenuto (ad esempio biscotti ??)

sito web.config Tecnologia:?? MVC 3, Entity Framework 4.1 (primo codice), 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> 

Il sito utilizza le aree MVC, che presumo sia ciò a cui si riferisce la sezione.

risposta

8

Via la configurazione di seguito, fa MVC ASP.NET o automaticamente determinare se si sta autenticato? (Come ho detto, non esiste un codice in i controllori a "redirect" o fare in modo che l'utente è autorizzato .

Sì, utilizza la sezione <location> nel web.config per consentire solo gli utenti che hanno il ruolo di amministratore per accedere al percorso /Admin/*.

Se ASP.NET gestisce questo, in quali situazioni si è necessario autorizzare tue azioni/controller? (cioè [autorizza] attributo)

In ASP.NET MVC utilizzando l'attributo [Authorize] è il metodo preferito per controllare quali azioni necessitano di autorizzazione invece di utilizzare il tag <location> nel proprio web.config come avete fatto. La ragione di ciò è che ASP.NET MVC utilizza il routing e non dovresti essere percorsi hardcoding nel tuo web.config che è ciò che accade con la sezione <location>. Quindi usa sempre l'attributo [Authorize] per decorare i controller/azioni che richiedono l'autenticazione.

Come funziona l'autenticazione dei moduli? Sono particolarmente interessato a come la "autorizzazione" è persistente? (cioè biscotti ??)

Biscotti, sì. È anche possibile effettuare il checkout dello following article su MSDN, che spiega come funziona l'autenticazione basata su form.

Problemi correlati