就像标题所说的那样,我希望保护目录不受匿名访问的影响,并且路由会忽略该目录,因为它包含静态内容。
我还要提一下,我只是在我的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安全性已被破坏。