为什么我的MVC3 AD授权过滤器在本地运行时似乎不起作用?

时间:2012-01-11 18:44:00

标签: asp.net-mvc-3 active-directory authorization

我正在使用ASP.NET MVC3编写一个简单的Web应用程序,我想将此应用程序的访问权限限制为我们域中Active Directory组的成员。

我使用控制器中的授权过滤器完成了此操作,如下所示:

namespace MyApp.Controllers
{
   [Authorize(Roles = @"DOMAINNAME\MyApp_AccessControlGroup")]
   public class HomeController : Controller
   {
      public ActionResult index()
      {
         //action code
      }

      //More actions here
   }
}

我没有定义自定义授权过滤器,但我确实修改了web.config以仅允许Windows身份验证:

<authentication mode="Windows">
   <!--<forms loginUrl="~/Account/LogOn" timeout="2880" />-->
</authentication>

<!--Added for Windows authentication-->
<authorization>
   <deny users="?"/>
</authorization>

当我将它部署到我们的开发网络服务器时(使用Visual Studio的发布功能,如果它很重要),这非常有效。如果我不在MyApp_AccessControlGroup组中,当我尝试在浏览器中启动应用程序时,系统会提示我输入凭据。但如果我在小组中,那么我可以按预期看到该网页。

在Visual Studio中调试时不是这种情况。当我按下F5并在我的工作站上启动ASP.NET Development Server时,即使我不在AD组中,我也能看到站点。

为什么会这样?我希望授权过滤器仍然可以检查组成员身份,无论代码在哪里运行。

1 个答案:

答案 0 :(得分:0)

嗯,我唯一能想到的是你以管理员身份运行Visual Studio,因此开发服务器以管理员身份运行,从而可以访问URL。