在ASP.NET Core中保护对.html文件的请求

问题描述 投票:0回答:1

我有一个用ASP.NET Core编写的Web应用程序。通过检查Session是否包含在第一次请求时从Web服务获得的Json对象来完成身份验证。 (使用公钥/私钥等)

在这个Json对象里面是一个与Web根文件夹下面的物理文件夹对应的数字。

因此,当用户访问此文件夹中的文件时,应检查是否允许这样做。实际上,此文件夹中有一个完整的静态网站,因此在提供之前必须检查对.html文件的每个请求。

我想这可以使用一些自定义中间件来完成,但我不确定从哪里开始。

任何人都知道如何完成这项工作?

asp.net-core authorization middleware static-files
1个回答
0
投票

唯一真正的方法是通过授权的操作代理HTML文件。例如。而不是直接链接到foo.html,你想要像/proxy?file=foo.html/proxy将是一个动作,检查用户是否实际上有权查看foo.html

docs中列出了类似的方法:

静态文件中间件不提供授权检查。其提供的任何文件(包括wwwroot下的文件)均可公开访问。根据授权提供文件:

  • 将它们存储在wwwroot以外的静态文件中间件可访问的任何目录中。
  • 通过应用授权的操作方法为它们提供服务。返回一个FileResult对象:
public IActionResult BannerImage()
{
    var file = Path.Combine(Directory.GetCurrentDirectory(), 
                            "MyStaticFiles", "images", "banner1.svg");

    return PhysicalFile(file, "image/svg+xml");
}
© www.soinside.com 2019 - 2024. All rights reserved.