保护被忽略的路由免受MVC.NET中的匿名访问

时间:2015-10-20 15:23:01

标签: asp.net-mvc azure

就像标题所说的那样,我希望保护目录不受匿名访问的影响,并且路由会忽略该目录,因为它包含静态内容。 我还要提一下,我只是在我的MVC应用程序中使用开箱即用的个人账户身份。
我得到的另一个问题是我将作为Azure Web应用程序托管。

忽略路线如下:

routes.IgnoreRoute("Cordova/{*pathInfo}");

这很好用。

我以为我可以在web.config中添加位置排除:

   <location path="Cordova" >
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>

只有这样,我仍然可以作为未经身份验证的用户访问内容,因此不是一个人。

然后在Web.config,system.webServer-&gt; modules部分我添加了:

<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />

现在它将拒绝访问该目录(当使用上面的位置元素时),但它不允许访问任何经过身份验证的用户。

我看到了其他一些涉及调整IIS设置或本地目录权限的建议,但由于我在Azure中托管,这对我来说不是一个选项。

更新 我在Web配置中实现了表单身份验证,并在我的Account控制器中手动添加了FormsAuthentication调用。它有效!

所以我猜测位置元素中的web.config deny="?"只能通过表单auth强制执行吗? 现在我将表单auth与OWIN cookie auth混合在一起。我以为有人使用了另一个(app.UseFormsAuthentication发生了什么?),但它看起来并不那样。我弄得一团糟。

我该怎么做?

UPDATE2
现在,我的WebAPI安全性已被破坏。

0 个答案:

没有答案