2012-08-25 15 views
8

Estoy trabajando en un sitio que utiliza la Autenticación de formularios. Estaba interesado en cómo funcionaba el sistema de autenticación, ya que cuando abro una página en el sitio, me redirecciona a un inicio de sesión, y ninguno de los controladores/acciones tiene ninguna lógica de autorización en ellos.Autenticación de formularios ASP.NET MVC: ¿cómo funciona y persiste la autenticación?

  • Mediante la siguiente configuración, ¿MVC o ASP.NET determinan automáticamente si está autenticado? (Como dije, no hay ningún código en los controladores para "redirigir" o asegurarse de que el usuario esté autorizado.
  • Si ASP.NET maneja esto, ¿en qué situaciones necesita autorizar sus acciones/controladores? (es decir, [Autorizar] atributo)
  • ¿Cómo funciona la autenticación de formularios estoy especialmente interesado en cómo se conserva la "autorización" (es decir, las galletas ??)

sitios web Web.config Tecnología:?? MVC 3, Entity Framework 4.1 (Código primero), 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> 

El sitio utiliza áreas MVC, que supongo que es a lo que se refiere la sección.

Respuesta

8

A través de la siguiente configuración, ¿determina MVC o ASP.NET automáticamente si está autenticado? (Como he dicho, no hay ningún código en los controladores a "redirigir" o asegurarse de que el usuario está autorizado .

Sí, utiliza la sección <location> en su web.config para permitir que sólo los usuarios que tienen la función de administración para acceder a la ruta /Admin/*.

Si ASP.NET se encarga de esto, en qué situaciones se necesitan para autorizar sus acciones/controladores? (es decir, [autorizar] atributo)

En ASP.NET MVC utilizando el atributo [Authorize] es el método preferido para controlar qué acciones necesitan autorización en lugar de usar la etiqueta <location> en su web.config como lo hizo. La razón de esto es que ASP.NET MVC usa el enrutamiento y usted no debería tener rutas de codificación en su web.config, que es lo que sucede con la sección <location>. Por lo tanto, siempre use el atributo [Authorize] para decorar los controladores/acciones que requieren autenticación.

¿Cómo funciona la autenticación de formularios? Estoy especialmente interesado en cómo la "autorización" persiste? (es decir, ¿cookies?)

Cookies, sí. También puede consultar el following article en MSDN que explica cómo funciona la Autenticación de formularios.

Cuestiones relacionadas