使用Authorize属性的ASP.NET MVC视图中的登录循环

13 浏览
0 Comments

使用Authorize属性的ASP.NET MVC视图中的登录循环

我刚刚将一个MVC应用程序上传到我的实际服务器上。在这之前,我在VS2008命令提示符中使用aspnet_regsql命令创建了一个用户('anders'),并创建了必要的表格和存储过程以进行身份验证。我在本地成功测试了,在访问此视图之前(或同时访问)需要登录:

[Authorize(Roles = "admin")]
public ViewResult Index()
{
    return View();
}

我备份了本地数据库,并将其恢复到实际服务器上。在测试视图之前,我验证了我能够使用新创建的用户登录。然而,当我尝试登录后访问视图时,我被无限重定向到登录页面。

新信息

看起来还有其他问题,但上述信息可能仍然有用。显然,尽管我查看了数据库并验证了我的UserIDdbo.aspnet_Roles表中,并且RoleID对应于admin角色,但我的用户不在admin组中。我通过更改主页面顶部欢迎登录用户的代码发现了这一点,并注意到它返回了false:

Welcome <%= Html.Encode(Page.User.Identity.Name) %>!
(<%= Html.Encode(Page.User.IsInRole("admin")) %>)

我和新创建的'stackoverflow'用户都应该属于admin角色,但出于某种原因他们不是。

非常感谢您帮助追踪为什么我的用户没有被认为属于'admin'角色的原因。提前致谢!

链接到我的实际服务器

0
0 Comments

问题的原因是在web.config文件中,设置为false在服务器的配置文件中,但在本地不是这样设置的。

解决方法是将服务器的配置文件中的设置为true。

0
0 Comments

问题的原因:可能是由于缓存技术引起的。另外,需要验证角色提供程序是否正常工作。

解决方法:根据提示,可以进行以下操作:

1. 确保Web.Config文件中的设置是正确的。

2. 可以创建一个诊断页面,显示提供程序的工作情况。

3. 可以在本地托管的代码中运行,并使用连接字符串连接到远程数据库服务器。

4. 默认的角色提供程序需要一个数据库,确保您有权限访问它,这可能是主机限制的原因。

通过调整Web.Config文件中的设置,问题得到了解决。感谢提示,这节省了很多时间!

0