ASP.NET Core 2.0 Win Auth主站点,但子文件夹为匿名

时间:2018-02-06 04:28:56

标签: c# asp.net-core iis-7

我希望有一个子文件夹,允许匿名用户下载使用Window Authentication保护的ASP.NET Core站点上的文件。我在wwwroot上启用了静态文件(如在app.UseStaticFiles中),但我不知道如何使子文件夹使用匿名安全性。我尝试在子文件夹中使用web.config,但是没有用。我不记得在不使用Core时这很困难,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

经过一些额外的研究,这是我到达的解决方案。

就像@Tratcher建议的那样,我在IIS中启用了Anonymous和Windows Auth。

我引用了包Microsoft.AspNetCore.Authentication并将其添加到ConfigureServices中:

services.AddAuthentication(
      Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme);

添加MVC时添加了默认授权策略:

services.AddMvc(o =>
{
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
    o.Filters.Add(new AuthorizeFilter(policy));
});

默认策略意味着我不必在任何地方使用Authorize属性。 但是通过这个解决方案,它打开了" wwwroot"静态文件,所以我需要一个地方来保护一些文件。

为了保护一些子文件夹,我使用了这个middleware solution by Scott Allen扫描请求的路径并按策略授权它们。