ASP.NET核心API静态文件授权

ASP.NET Core API static files authorization

我不确定是否有人再次询问过这个问题,但在 docs 我看到了如何为 MVC 项目启用静态文件授权。

我正在构建一个 Blazor WASM AspNet 托管网站,该网站将充当图片库网站,人们可以在其中上传图片。

要求是添加授权,以便用户只能看到他拥有的图像。 这已经实现,但问题是上传的图像在后端服务器上保存为静态文件,在 wwwroot 下,默认情况下 public 可用。

我尝试使用另一种方法将图像直接上传为 byte[] MSSQL,但我认为将图像存储在数据库中不是一个好主意。

我还尝试从 API 和 return 上的静态文件中读取字节,将它们作为 base64 编码字符串发送给客户端,但这也不是一个好方法对于大图像。

我认为唯一合适的方法是在后端将图像保存为静态文件,将指向它们的链接保存在数据库中并以某种方式向授权用户公开文件?

这可能吗?

您需要从控制器操作而不是静态文件提供文件,然后您可以像往常一样使用 [Authorize] 属性。不要将图像保存在 wwwroot 文件夹中。

public IActionResult DisplayImage() => new FileStreamResult(new FileStream(pathToImage, FileMode.Open, FileAccess.Read), "image/png");