asp.net - 将 Windows 身份验证与 ASP.NET MVC 结合使用

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

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

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

http://example.com/

http://example.com/admin

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

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

我最终得到的是一个不起作用的登录提示。我已经尝试了用户名和 example1\username 但总是无法登录。

我错过了什么?

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

最佳答案

不要使用 web.config 来设置访问权限。这就是您在 ASP.NET Web 表单中执行此操作的方式。

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

任何没有 [Authorize] 属性的 Controller 都应自动向公众开放。因此,只需将您的属性放在您想要锁定的 Controller 上即可。

关于asp.net - 将 Windows 身份验证与 ASP.NET MVC 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343209/

相关文章:

c# - 如何对 Web Api 操作进行后调用?

asp.net - 从 .aspx 页面直接到达 SessionId

vbscript - 空格和回车被添加到 HTML 电子邮件

c# - CurrentPrincipal.Identity.Name 为空

.net - IIS 缓存重试

javascript - 将 css 和 javascript 与 webforms bundle 在一起

asp.net - 如何将数据发布到 ASP.NET HttpHandler?

asp.net - DropDownList 的 MVC2 编辑器模板

asp.net-mvc - MVC2 : Validating User Input/Best Practices

asp.net-mvc-2 - 从头开始使用 ASP.NET MVC 2 和 Ninject 2