如何使 .NET CORE 中的静态文件仅供授权用户使用?

yW0*_*K5o 4 asp.net-core

<img src="~/static/img1.jpg" />
Run Code Online (Sandbox Code Playgroud)

我使用这篇文章来启用静态文件,但这些代码不起作用。

[Authorize]
public IActionResult BannerImage()
{
     var file = Path.Combine(Directory.GetCurrentDirectory(), 
                        "MyStaticFiles", "images", "banner1.svg");

      return PhysicalFile(file, "image/svg+xml");
 }
Run Code Online (Sandbox Code Playgroud)

同时另一篇文章中并没有帮助。但我不知道如何让图片仅供授权用户使用?

更新

我添加到将 WWWROOT 配置为静态目录以设置缓存头

 app.UseStaticFiles(new StaticFileOptions
 {
    FileProvider = new PhysicalFileProvider(
    Path.Combine(Directory.GetCurrentDirectory(), "WWWROOT"))
 });
 app.UseStaticFiles(new StaticFileOptions
    {
        FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "MyStaticFiles")),
        OnPrepareResponse = x =>
        {
            if (x.Context.User.Identity.IsAuthenticated)
            {
                return;
            }

            x.Context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
        }
    });
Run Code Online (Sandbox Code Playgroud)

然后授权停止工作。

als*_*ami 7

就这样做

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseStaticFiles(new StaticFileOptions
        {
            OnPrepareResponse = x =>
            {
                if (x.Context.User.Identity.IsAuthenticated)
                {
                    return;
                }

                x.Context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
            }
        });
        app.UseDefaultFiles();
    }
Run Code Online (Sandbox Code Playgroud)