c# - ASP.NET Core API 静态文件授权
问题描述
我不确定是否再次询问过这个问题,但在文档中我看到了如何为 MVC 项目启用静态文件授权。
我正在构建一个 Blazor WASM AspNet 托管站点,该站点将充当图片库网站,人们可以在其中上传图片。
要求是添加授权,以便用户应该只能看到他拥有的图像。这已经实现了,但问题是上传的图像被保存为后端服务器上的静态文件,在wwwroot
,并且默认情况下是公共可用的。
我尝试使用另一种方法byte[]
直接上传图像,MSSQL
但我认为将图像存储在数据库中不是一个好主意。
我还尝试从 API 上的静态文件中读取字节并将它们作为base64
编码字符串返回给客户端,但这对于大图像也不是一个好方法。
我认为合适的唯一方法是将图像保存为后端的静态文件,将指向它们的链接保存在数据库中并以某种方式向授权用户公开文件?
这可能吗?
解决方案
您将需要从控制器操作而不是静态文件提供文件,然后您可以[Authorize]
像往常一样使用该属性。不要将图像保存在 wwwroot 文件夹中。
public IActionResult DisplayImage() => new FileStreamResult(new FileStream(pathToImage, FileMode.Open, FileAccess.Read), "image/png");
推荐阅读
- junit4 - 如何为java编写Junit
- ios - 打开文本集上的链接到 UILabel 作为属性字符串。从 json 响应中读取属性字符串
- android - 应用因违反家庭政策 Play 商店被拒绝
- c++ - 服务器套接字在后台运行时无法正常工作
- python - 如何使用 postgres 在 django 中获取数组字段数据
- python - 如何使用 django 和 GeoIP2 保存和显示用户 IP 和位置
- elasticsearch - elasticsearch中多个字段的聚合
- arrays - 具有特定类型的对象数组
- c - A Little C 程序中的一些问题
- scala - spark scala maven 错误:SparkConf 没有构造函数