【问题标题】:ASP.NET MVC 4 Applying Windows Authentication to a single Controller?ASP.NET MVC 4 将 Windows 身份验证应用于单个控制器?
【发布时间】:2013-03-08 11:20:57
【问题描述】:

我有一个对所有用户开放的 MVC 4 应用程序,无需登录。 只有一个控制器,我需要通过 Web.Config 应用 Windows 身份验证,如下所示:

  <authentication mode="Windows" />
    <authorization>
      <allow users="domain\jsmith" />
      <deny users="*" />
    </authorization>

控制器将 MySite.Com/MyApp/MyAdminReportController

如果可以,怎么做?

【问题讨论】:

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


【解决方案1】:

我认为您只需要 Windows 身份验证并指定只需要授权的路径。如果您也不需要 Forms 身份验证,它看起来像这样:

<configuration>
  ...
  <system.web>
    ......
    <authentication mode="Windows">
    </authentication>
  </system.web>
  <location path="MyAdminReport">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>

</configuration>

这是网络配置方法,其他选项是向您的控制器添加 [Authorize] 属性(即使不是孔控制器,您也可以仅为特定操作添加此属性)。

[Authorize]
public class MyAdminReportController : Controller
{

   //[Authorize]
   public ActionResult PrivatePage()
   {
      return View();
   }


}

【讨论】:

  • location path 需要路径而不是控制器名称。所以它应该是path="MyAdminReport"。如果多个路由/路径通向控制器,则所有这些都需要列出。
  • 是的,你是对的“控制器”后缀应该被删除,感谢您的提醒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多