如何在登录后获取用户角色?

时间:2013-09-02 17:59:29

标签: c# asp.net security web-applications login

以下是我登录的示例代码:

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.IsUserInRoleRoles.GetRolesForUSer方法都能正常运行。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用

HttpContext.Current.User.IsInRole("role")

我不是百分之百确定Roles安全类何时在登录后得到更新 - 但是在调用转发页面并生成一个全新请求之前我不会下注。

答案 1 :(得分:0)

解决方案是重定向到另一个页面并检查那里。问题是,在您有另一个回发之前,不会使用角色信息读回cookie(请阅读您刚刚撰写的cookie)。

相关问题