APS.NET 核心 5 Web Api - 静态文件、授权和身份验证

APS.NET CORE 5 Web Api - Static files, Authorization and Authentication

我有静态文件夹:

并且我按照 Microsoft 文档来验证授权和身份验证:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-5.0

一切正常,但我的所有请求都返回 401,包括 SignIng 请求。 我的启动文件:

我的控制器没有[授权]。

我需要登录才能接收令牌,以便仅为经过身份验证的用户显示文件。 顺便说一句,我有 JWT 身份验证。

我做错了什么?有帮助吗?

你可以在官方文档中找到说明:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-5.0

在前面的代码中,后备授权策略要求所有用户都经过身份验证。指定自己的授权要求的端点(例如控制器、Razor 页面等)不使用回退授权策略。例如,带有 [AllowAnonymous] 或 [Authorize(PolicyName="MyPolicy")] 的 Razor 页面、控制器或操作方法 RequireAuthenticatedUser 将 DenyAnonymousAuthorizationRequirement 添加到当前实例,强制当前用户通过身份验证。

并且我用代码进行了测试,我们可以看到结果:

并且该文档还提供了一种基于授权提供文件的替代方法: 将它们存储在 wwwroot 和静态文件中间件可访问的任何目录之外。 通过应用授权的操作方法和 return FileResult 对象为他们提供服务:

[Authorize]
public IActionResult BannerImage()
{
    var filePath = Path.Combine(
        _env.ContentRootPath, "MyStaticFiles", "images", "red-rose.jpg");

    return PhysicalFile(filePath, "image/jpeg");
}