2010-07-15 24 views
5

Bir kimlik doğrulama tanımlama bilgisi el ile oluşturmak için Logon yönteminde FormsAuthenticationTicket ayarını yapıyorum. Bu kimlik doğrulama çerezini nasıl doğrularım ve Current.User nesnesini atarım. Global.asax sayfasında mı yapıldı?Asp.Net MVC FormsAuthenticationTicket

Oturum açma kodu:

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

Nasıl bu çerezi okuyup kullanıcıyı doğrularım? bugüne kadar Global.asax dosyasında kodum:

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; 
     } 

cevap

3

Ben bir ana kontrolöre bir kod bu tür taşındı. Denetleyici sınıfında geçersiz kılınabilecek "Yetki Verme" adlı bir yöntem vardır.

Biraz zaman geçti, ama Global.asax'daki OnAuthorization yöntemini kullanarak tüm isteklerin (görüntüler, css ... vb.) Olduğuna inanıyorum. Yetkilendirmeyi denetleyiciye doğru iterek, yalnızca denetleyicinize/eylemlerinize

+0

sorununu çözmeniz için çok teşekkür ederiz. – ace