管理对 ASP.NET Core 中下载文件和隐藏基础 URL 的访问权限

Manage access to download file and hide base URL in ASP.NET Core

我正在开发一个 ASP.NET 核心项目,我想下载 link 供用户在付款后使用。该文件位于另一台根本不安全的服务器上,我不希望泄露主要地址,因为这样用户就可以访问 link 而无需支付任何费用。我怎样才能使这个 link 安全?

作为您在另一台服务器中的资源。所以我们不能限制我们的用户访问它,如果他们知道 url.

所以我建议你可以在你的后端代码中下载资源文件,等他们完成付款后。

测试后,下载示例文件,无法获取资源url。

测试步骤:

我的示例视频url:

http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

1.通过 services.AddHttpClient(); 在 .net core 中添加 HttpClient。并定义您的控制器,如下图所示。

2。可以参考我的测试代码

   public async Task<IActionResult> DownloadFile(string fileid)
   {
        // get model by id from your db
        fileModel model = bll.getmodelbyid(fileid);
        string url = model.fileid;   //"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4";

        using (var client = new HttpClient())
        {

            using (var result = await client.GetAsync(url))
            {
                if (result.IsSuccessStatusCode)
                {
                    return new FileContentResult(await result.Content.ReadAsByteArrayAsync(), model.mimetype)//"video/mp4")
                    {
                        FileDownloadName = Guid.NewGuid() + model.fileextension//".mp4"
                    };
                }

            }
        }
        return null;
   }

3。测试结果