2010-07-15 15 views
5

Im setting FormAuthenticationTicket nel metodo di accesso per creare manualmente un cookie di autenticazione. Come convalidare quel cookie di autenticazione e assegnarlo l'oggetto Current.User. È fatto nella pagina Global.asax?Asp.Net MVC FormsAuthenticationTicket

codice di accesso:

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"); 

Come faccio a leggere questo cookie e convalidare l'utente? mio codice finora nel file 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; 
     } 

risposta

3

mi sono trasferito questo tipo di codice in un controller di base. Esiste un metodo chiamato "OnAuthorization" nella classe Controller che può essere sovrascritto.

È passato un po 'di tempo, ma credo che tutte le richieste (immagini, css ... ecc.) Siano state sottoposte al metodo OnAuthorization in Global.asax. Spingendo l'autorizzazione sul controller si ottiene solo la richiesta al controller/azioni

+0

grazie mille che ha risolto il problema. – ace