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

ASP.NET Core 2.0 Win Auth main site, but sub-folder as anonymous

我想要一个子文件夹,允许匿名用户在使用 Window 身份验证保护的 ASP.NET 核心站点上下载文件。我在 wwwroot 上启用了静态文件(如 app.UseStaticFiles),但我看不到如何使子文件夹使用匿名安全性。我尝试在子文件夹中使用 web.config ,但没有用。我不记得在不使用 Core 时这会很困难,感谢任何帮助。

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

就像@Tracher 所建议的那样,我在 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 扫描请求的路径并按策略授权它们。