ورود

View Full Version : سوال: مشکل IsInRole در نقش دسترسی در فرم لاگین



_Memol_
یک شنبه 13 دی 1394, 16:42 عصر
با سلام من اهراز هویت با استفاده از FormAuthentication دارم
مشکلم اینجاست Role ها رو در جدول ذخیره می کنم می خوام اگه کاربر وارد شده admin بود به یه اکشن خاصی بره اما متاسفانه User.IsInRole("Admin") ام همیشه False هست
این کدهای global.acx


protectedvoid FormsAuthentication_OnAuthenticate(Object sender, FormsAuthenticationEventArgs e)
{

if (FormsAuthentication.CookiesSupported == true)
{
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
try
{
string username = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;

string roles = string.Empty;

UserRepository blUser = newUserRepository();
roles = blUser.Where(p => p.User_Email == username).Single().User_Roles;
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(

new System.Security.Principal.GenericIdentity(username , "Forms"), roles.Split(','));

}
catch (Exception)

{

//somehting went wrong

}

}

}

}

protectedvoid Application_PostAuthenticateRequest(Object sender, EventArgs e)
{

if (FormsAuthentication.CookiesSupported == true)

{

if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)

{

try

{

string username = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;

string roles = string.Empty;

UserRepository blUser = newUserRepository();

roles = blUser.Where(p => p.User_Email == username).Single().User_Roles;

HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(

new System.Security.Principal.GenericIdentity(username , "Forms"), roles.Split(','));

}

catch (Exception)
{

//somehting went wrong

}

}

}

}

بالای کنترلر adminam اینو نوشتم
Authorize(Roles = "Admin")]

اینم کد لاگین

[HttpPost]

[AllowAnonymous]

publicActionResult Login(User user, bool RememberMe)
{
var blUser = newUserRepository();

if (blUser.Exist(user.User_Email, user.User_Password))

{

FormsAuthentication.SetAuthCookie(user.User_Email, RememberMe);

if (User.IsInRole("Admin"))
{

return RedirectToAction("About", "Admin");

}

else

{


return RedirectToAction("Index");

}

}



else
{


ViewBag.Message =
"نام کاربری یا رمز عبور اشتباه است";


}
return View();

}

همه چی درسته یعنی توو نوار آدرس میزنیم Admin/About بایدحتما کاربری با نقش admin وارد شده باشه اما user.IsInRole کار نمیکنه ایرادم چیه؟
با تشکر