【问题标题】:ASP.net MVC - Authorize with Windows Authentication/Role ProviderASP.net MVC - 使用 Windows 身份验证/角色提供程序进行授权
【发布时间】:2011-09-01 16:40:17
【问题描述】:

我在我的 MVC 应用程序中使用 Windows 身份验证和 WindowsTokenRoleProvider。我创建了一个控制器动作,如下所示:

[Authorize(Roles=@"Fake\Role")]
public ActionResult Admin()
{
    return View();
}

当我尝试点击此页面时,我看到一个空白页面。有没有办法让我显示一个自定义视图,上面写着“您无权查看此页面”,而不是只显示一个空白页面。如果我使用表单身份验证,那么它会将我重定向到登录页面,但这对于 Windows 身份验证没有任何意义,因为您从未真正真正登录过。

【问题讨论】:

  • @dlev 我不确定这是否真的是重复的。这个问题虽然没有特别提到 Forms Auth,但似乎完全集中在 Forms auth 上。这是关于 Windows 身份验证的。
  • @Chris 链接问题的答案谈到在自定义 AuthorizationFilter 中设置不同的结果,这是解决此问题的好方法。

标签: c# asp.net-mvc windows-authentication


【解决方案1】:

您很可能没有得到空白页(我不确定)。您很可能会收到一个没有内容但有 403 未授权状态码的 http 响应。

假设这是准确的,您需要做的就是在 ASP.NET 自定义错误(和 IIS 自定义错误)中设置一个将 403 代码重定向到相应页面的规则。

【讨论】:

  • 啊,你可能是对的。它在 IE 中显示为空白页 :)
  • 我添加了一个自定义错误部分,其中包含 403 和 404 错误代码。如果我输入无效地址,它会将我重定向到我的 404 页面,但是当我尝试查看我无权查看的页面时,我仍然看到一个空白页面。我不能使用提琴手,因为我没有管理员权限可以在我的机器上安装。如何判断它是否真的是 403?
  • Firefox 中的 Firebug,或者 IE9 和 Chrome 中的开发者工具也应该让您看到响应代码。如果这些都不起作用,您应该可以使用 curl 直接调用 url。您是否还设置了 IIS 自定义错误和 asp.net 自定义错误?
  • 作为开发人员,您不是计算机上的本地管理员,真可惜。这是我的工作要求,任何拒绝为我提供适当工作环境的公司,包括本地管理员、VS2010、resharper 和我将拒绝工作的高性能机器。
  • 我刚拿到机器,这是一个错误......它将被纠正:)
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 2019-04-30
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 2015-12-11
  • 2010-11-25
  • 2011-03-12
相关资源
最近更新 更多