0

我是 ASP.NET 的新手,遇到了一个奇怪的问题。

我已成功登录(我的登录部分视图显示我的用户名使用User.Identity.NamewhenRequest.isAuthenticated为真),但是,当我尝试访问受保护的控制器时[Authorize(Roles="Teacher")](我以教师身份登录),他几乎总是在重定向我到登录页面。所以我登录了,我可以访问网页,但是如果我在登录后刷新大约 30 秒,我知道我的用户名仍然被打印并且我似乎仍然被登录。

有任何想法吗?

4

4 回答 4

2

在成功登录后检查经过身份验证的用户具有哪些角色。将以下行添加到 HomeController 中的 Action 方法中。例如:

public void CheckRoles()
{
    foreach (var role in Roles.GetRolesForUser())
    {
        Response.Write(role + "<br/>");
    }

}
于 2012-11-02T02:22:22.517 回答
0

老师是登录?老师是角色?对于这个登录的用户,是否在 pages_UsersInRoles 表中存在适当的记录?

于 2012-11-06T12:59:28.537 回答
0

一个好的开始是弄清楚你的用户是什么类型的委托人。

在您的控制器中,将以下内容和一个断点放在该行上。

var user = User;

用户将为您提供当前的主体并在调试器中查看它。当我遇到这样的情况时,这是因为我可能启用了表单身份验证并打开了 Windows 角色管理器。

查看 Principal 是什么将很快帮助您隔离问题。

于 2012-11-01T19:00:39.457 回答
0

您使用的授权过滤器看起来是正确的。你检查过角色的拼写吗?也许角色是“老师”而不是“老师”或类似的角色。为了安全起见,请确保角色名称的大小写相同。

于 2012-10-31T21:18:16.137 回答