0

这是我的登录示例代码:

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方法都可以正常工作。

4

2 回答 2

0

你可以尝试使用

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

我不能 100% 确定登录后何时更新角色安全类 - 但我敢打赌,直到调用转发页面并生成一个全新的请求。

于 2013-09-02T19:11:10.887 回答
0

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

于 2013-10-18T13:53:34.707 回答