gpt4 book ai didi

asp.net-core - 使用身份验证在 Blazor 服务器端下载文件

转载 作者:行者123 更新时间:2023-12-04 12:02:40 28 4
gpt4 key购买 nike

我有一个使用默认授权和身份验证的 Blazor 服务器端 Web 应用程序。

app.UseAuthentication()
app.UseAuthorization()
我可以保护我的页面
@attribute [Authorize]
我有一个匿名访问的登录页面进行身份验证。这工作正常。
现在我需要一种方法让用户从这个授权页面下载文件。令人惊讶的是,我还没有找到任何直接的方法来做到这一点。
一种解决方法是使用文件名作为路径参数构建 API Controller ,并为用户提供指向它的链接。
[Route("api/[controller]")]
public class FileController{

[HttpGet("download/{filename}")]
public async Task<IActionResult> Download([FromRoute] string filename){

//Do some checks and get file from Filesystem

return file;
}
}
在 .razor 文件中
<a href="@CalculateDownloadLink("file.txt")" target="_blank"></a>

private string CalculateDownloadLink(string filename){
return $"{NavigationManager.BaseUri}/api/file/download/{filename}"
}
这是一个简化版。实际上,文件名是通用的。这也有效。
现在我想向 API Controller 添加身份验证,因为我不想让任何人猜测文件名。但我不知道怎么做。
当然 [Authorize] 属性不起作用,因为代码在电路范围之外。
我不知道如何使用任何内置授权来完成这项工作。
有没有更好的方法从 Blazor 应用程序下载文件?

最佳答案

回答你的问题有点晚了,但是 [Authorize]在 Controller 上应该可以工作。你试过吗? Controller 方法获得的 cookie 与 Blazor 页面获得的 cookie 相同。
但是有一种更好的方法可以从 Blazor 下载文件而无需导航。看到这个 blog post .

关于asp.net-core - 使用身份验证在 Blazor 服务器端下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62659387/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com