我确信这是一个基本答案,但我的搜索能力今天对我没有帮助。我有一个 ASP.NET MVC 2 (.NET 3.5) 应用程序。它托管在 IIS 6 上。
为了这个问题,我有两个网址。
我希望域中的任何用户都可以使用管理员权限,并且所有用户都可以使用根权限。服务器在域上,但域是 example1.com,所以它们不一样。
由于这是 ASP.NET MVC,因此没有可设置权限的 Admin 文件夹。我尝试将整个网站设置为阻止匿名请求并允许所有请求。然后在 web.config 中我将其设置为拒绝管理文件夹中未经身份验证的用户和/或允许匿名访问根目录。
我最终得到的是一个不起作用的登录提示。我已经尝试了用户名和 example1\username 但总是无法登录。
我错过了什么?
====澄清/回答==== Pandincus 给出了很好的代码建议,将 [Authorize] 添加到类中是完成这项工作的一种非常干净的方法。然而,我的问题最终是我在同一个盒子上完成所有这些工作。我的盒子上有一个 example.com 的 HOSTS 条目,并通过 URL 访问它。当我将 HOSTS 条目放在另一个盒子上并点击该网站时,它允许我毫无问题地登录。我的问题有点不完整,因为我应该提到这一点以及 http://localhost/ 的事实工作得很好。
最佳答案
不要使用 web.config 来设置访问权限。这就是您在 ASP.NET Web 表单中执行此操作的方式。
- 将您的 web.config 配置为使用 Windows 身份验证。
- 在您拥有的任何管理 Controller 上使用 [Authorize] 属性。
任何没有 [Authorize] 属性的 Controller 都应自动向公众开放。因此,只需将您的属性放在您想要锁定的 Controller 上即可。
关于asp.net - 将 Windows 身份验证与 ASP.NET MVC 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343209/