【问题标题】:Using Windows Authentication with ASP.NET MVC通过 ASP.NET MVC 使用 Windows 身份验证
【发布时间】:2011-07-17 14:59:34
【问题描述】:

我确信这是一个基本的答案,但我的搜索能力今天对我没有帮助。我有一个 ASP.NET MVC 2 (.NET 3.5) 应用程序。它托管在 IIS 6 上。

为了这个问题,我有两个网址。

http://example.com/

http://example.com/admin

我希望域中的任何用户都可以使用 admin,并且所有用户都可以使用 root。服务器在域上,但域是example1.com,所以它们不一样。

由于这是 ASP.NET MVC,因此没有可设置权限的 Admin 文件夹。我尝试将整个站点设置为阻止匿名请求并让它允许所有请求。然后在 web.config 中,我将其设置为拒绝 admin 文件夹中未经身份验证的用户和/或允许匿名访问 root。

我最终得到的是一个不起作用的登录提示。用户名和example1\username我都试过了,但总是登录失败。

我错过了什么?

==== 澄清/回答 ==== Pandincus 给出了一个很好的代码建议,在类中添加 [Authorize] 是一种非常干净的方式来完成这项工作。然而,我的问题最终是我在同一个盒子上做所有这些。我的盒子上有一个 example.com 的 HOSTS 条目,并通过 URL 访问它。当我在我的另一个盒子上放一个主机条目并点击该站点时,它允许我毫无问题地登录。我的问题有点不完整,因为我应该提到这一点以及http://localhost/ 工作正常的事实。

【问题讨论】:

    标签: asp.net asp.net-mvc-2 iis-6 windows-authentication


    【解决方案1】:

    不要使用 web.config 来设置访问权限。这就是你在 asp.net 网络表单中的做法。

    1. 将您的 web.config 配置为使用 Windows 身份验证。
    2. 在您拥有的任何管理控制器上使用 [Authorize] 属性。

    任何没有 [Authorize] 属性的控制器都应该自动向公众开放。所以,只把你的属性放在你想锁定的控制器上。

    【讨论】:

    • 好的,开始搜索....但是当我这样做时。我怎样才能让它在我的盒子上不做任何事情?我的盒子是 IIS 7.5,它不能很好地使用它(据我所知)。
    • 没关系,实际上让它在我的盒子上表现更好!您的回答并没有完全解决我的问题,但它确实为我提供了更好的代码解决方案,因此我将为您提供答案并扩展我的问题,以供未来的编码人员使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2015-01-31
    • 1970-01-01
    • 2014-01-10
    相关资源
    最近更新 更多