首页 > 解决方案 > ASP.NET Core API 静态文件授权

问题描述

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

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

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

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

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

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

这可能吗?

标签: c#asp.net-coreasp.net-core-webapiblazor-client-side

解决方案


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

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

推荐阅读