我有一个用ASP.NET Core编写的Web应用程序。通过检查Session是否包含在第一次请求时从Web服务获得的Json对象来完成身份验证。 (使用公钥/私钥等)
在这个Json对象里面是一个与Web根文件夹下面的物理文件夹对应的数字。
因此,当用户访问此文件夹中的文件时,应检查是否允许这样做。实际上,此文件夹中有一个完整的静态网站,因此在提供之前必须检查对.html文件的每个请求。
我想这可以使用一些自定义中间件来完成,但我不确定从哪里开始。
任何人都知道如何完成这项工作?
唯一真正的方法是通过授权的操作代理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"); }