我刚刚将MVC应用程序上传到我的实时服务器。在这之前,我通过VS2008命令提示符中的aspnet_regsql
命令创建了必要的表和存储过程以创建用户('anders')。我在本地成功测试了我需要在访问此视图之前(或同时)登录:
[Authorize(Roles = "admin")]
public ViewResult Index()
{
return View();
}
我备份了我的本地数据库,并将其恢复到我的实时服务器。在测试视图之前,我确认我可以使用新创建的用户登录。但是,当我在登录后尝试访问视图时,我会无限期地重定向到登录页面。
看起来正在发生其他事情,但上述信息可能仍然有用。显然,我的用户在管理员组中不,即使我查看了数据库并确认我的UserID
位于dbo.aspnet_Roles
表中且RoleID
对应与管理员角色。我通过更改主页顶部的代码来发现这一点,它欢迎登录用户,并注意到它返回false:
Welcome <b><%= Html.Encode(Page.User.Identity.Name) %></b>!
(<%= Html.Encode(Page.User.IsInRole("admin")) %>)
我的用户和新创建的'stackoverflow'(密码是passw0rd,供你们查看)用户应该是管理员角色,但由于某种原因他们不是。
任何有关追踪我的用户未被识别为“管理员”角色的原因的帮助将不胜感激。提前谢谢!
答案 0 :(得分:1)
您使用的是任何缓存技术吗?这也许是原因。
您还需要验证RoleProvider是否正常工作,但没有更多详细信息我无法提供更多帮助
答案 1 :(得分:0)
我遇到了同样的问题。在web.config中:
<roleManager enabled="true">
...
在服务器配置中设置为false,但不是本地配置。