PDA

View Full Version : مشکل با تابع IsInRole



ahmad156
جمعه 13 بهمن 1391, 14:12 عصر
سلام دوستان
وقتی مراحل زیر انجام میشه و مراحل Login دیگه نیاز نیست IsInRole مقدار false رو بر میگردونه در صورتی که مقدار UserData برابر role هست

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
HttpCookie cookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
FormsIdentity identity = new FormsIdentity(ticket);
GenericPrincipal principal =new GenericPrincipal(identity, new string[] { ticket.UserData }); //UserData="admin"
Context.User = principal;
}
}


User.IsInRole("admin") //false

در صورتی UserData مقدار admin داره و بقیه اطلاعات کاربر هم موجود هست
ولی وقتی Login انجام میشه و کد زیر اجرا میشه اینجور نیست

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.name + " " + user.family, DateTime.Now, DateTime.Now.AddHours(60), isPersist, "admin");

ahmad156
شنبه 14 بهمن 1391, 18:17 عصر
دوستان عزیز کسی با این مشکل برخورد نکرده؟:ناراحت:

ahmad156
سه شنبه 17 بهمن 1391, 19:43 عصر
دوستان عزیز از به جای

FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); FormsIdentity identity = new FormsIdentity(ticket);
GenericPrincipal principal =new GenericPrincipal(identity, new string[] { ticket.UserData });

در Application_AuthenticateRequest عبارت زیر نوشتم درست شد

FormsAuthenticationTicket ticket2 = new FormsAuthenticationTicket(1,ticket.Name, DateTime.Now, DateTime.Now.AddHours(60), ticket.IsPersistent, ticket.UserData);
FormsIdentity identity = new FormsIdentity(ticket2);
GenericPrincipal principal =new GenericPrincipal(identity, new string[] { ticket2.UserData });

حالا یعنی مشکل من از Decrypt بوده یا نه؟؟؟؟؟؟