2016-04-11 20 views
1

Hata ayıklayıcıda, Kullanıcı nesnesine girersem, geçerli üyenin UserData özelliğini, ((System.Web.Security.FormsIdentity(User.Identity)).Ticket.UserData, içinde "admin" olduğunu görebilirim. ancak User.IsInRole("admin") öğesi yanlış döndürür.FormsAuthentication Ticket ayarlanmışsa, neden User.IsInRole ("Admin") çalışmıyor?

"Admin" UserData özelliğinde ise, o zaman neden User.IsInRole ("admin") doğru olmaz? Benim giriş yönteminde

benim yaptığım gibi kurmak kimlik doğrulama bileti aşağıdaki gibidir: Eğer bu görebilirsiniz

FormsAuthenticationTicket _ticket = new FormsAuthenticationTicket(1, lUserName.Text, DateTime.Now, DateTime.Now.AddMonths(1), chk_remember.Checked, Role, FormsAuthentication.FormsCookiePath); 
     string encTicket = FormsAuthentication.Encrypt(_ticket); 
     HttpCookie _cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
     if (chk_remember.Checked) 
      _cookie.Expires = DateTime.Now.AddMonths(1); 
     Response.Cookies.Add(_cookie); 
+0

herhangi biri yardımcı olabilir mi? –

cevap

2

Eğer daha fazla bilgi için Global.asax

protected void Application_AuthenticateRequest(Object sender, 
EventArgs e) 
{ 
    if (HttpContext.Current.User != null) 
    { 
    if (HttpContext.Current.User.Identity.IsAuthenticated) 
    { 
    if (HttpContext.Current.User.Identity is FormsIdentity) 
    { 
     FormsIdentity id = 
      (FormsIdentity)HttpContext.Current.User.Identity; 
     FormsAuthenticationTicket ticket = id.Ticket; 

     // Get the stored user-data, in this case, our roles 
     string userData = ticket.UserData; 
     string[] roles = userData.Split(','); 
     HttpContext.Current.User = new GenericPrincipal(id, roles); 
    } 
    } 
    } 
} 

bu kodu koymak gerekir Link form authentication

+0

2 gün boyunca kafamı çarptıktan sonra, sonunda doğru cevabı aldım. Çok teşekkürler! –