以下是我登录的示例代码:
if (WebSecurity.Login(playerModel.WorkerID, playerModel.Password))
{
if (Roles.IsUserInRole(User.Identity.Name, "Administrator"))
{
// display the admin panel
ViewBag.Message = "Admin Panel";
return View("Index");
}
else
{
ViewBag.ButtonText = "Log In";
ViewBag.Message = "You are not an Admin user";
return View();
}
}
出于某种原因,我第一次登录时,即使用户在表格中的"Administrator"
内,他们也不在Role
。我也试过用这个:
Roles.GetRolesForUser();
返回一个空数组。我假设用户登录时有一个限制,发生回发,然后能够检查角色。但我希望有一个解决方法(或者我有错误)。
回复后,Roles.IsUserInRole
和Roles.GetRolesForUSer
方法都能正常运行。
答案 0 :(得分:0)
您可以尝试使用
HttpContext.Current.User.IsInRole("role")
我不是百分之百确定Roles安全类何时在登录后得到更新 - 但是在调用转发页面并生成一个全新请求之前我不会下注。
答案 1 :(得分:0)
解决方案是重定向到另一个页面并检查那里。问题是,在您有另一个回发之前,不会使用角色信息读回cookie(请阅读您刚刚撰写的cookie)。