2010-07-15 14 views
5

Im setting FormsAuthenticationTicket en el método de inicio de sesión para crear manualmente una cookie de autenticación. Cómo validar esa cookie de autenticación y asignarle el objeto Current.User. ¿Se hace en la página Global.asax?Asp.Net MVC FormsAuthenticationTicket

código de inicio de sesión:

FormsAuthenticationTicket Authticket = new 
          FormsAuthenticationTicket(1, 
          model.UserName, 
          DateTime.Now, 
          DateTime.Now.AddYears(1), 
          true, 
          "", 
          FormsAuthentication.FormsCookiePath); 

       string hash = FormsAuthentication.Encrypt(Authticket); 

       HttpCookie Authcookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); 

       if (Authticket.IsPersistent) Authcookie.Expires = Authticket.Expiration; 

       Response.Cookies.Add(Authcookie); 


       if (!String.IsNullOrEmpty(returnUrl)) 
       { 
        return Redirect(returnUrl); 
       } 

       return RedirectToAction("Index", "Home"); 

¿Cómo se lee esta cookie y validar el usuario? mi código hasta ahora en el archivo Global.asax:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
     if (authCookie != null) 
     { 
      FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
      FormsIdentity id = new FormsIdentity(authTicket); 
      GenericPrincipal principal = new GenericPrincipal(id,null); 
      Context.User = principal; 
     } 

Respuesta

3

me trasladó este tipo de código en un controlador base. Hay un método llamado "OnAuthorization" en la clase Controller que puede anularse.

Ha pasado un tiempo, pero creo que todas las solicitudes (imágenes, css ... etc) se realizaron mediante el método OnAuthorization en Global.asax. Al presionar la autorización hacia el controlador, solo está recibiendo la solicitud a su controlador/acciones

+0

muchas gracias que resolvió el problema. – ace