【问题标题】:Role based Access to Static Content in ASP.NET COREASP.NET CORE 中基于角色的静态内容访问
【发布时间】:2021-03-19 05:37:40
【问题描述】:

有什么方法可以根据他们的角色授予对静态内容的访问权限。在我的应用程序中,身份验证是通过 Azure Active AD 完成的,并且应根据其角色访问内容,例如员工应访问所有员工页面,学生应访问学生页面。这就是我的解决方案资源管理器的样子。 Solution Explorer

我知道这是 Secure requests to .html files in ASP.NET Core 的副本,但我找不到任何方法来实施该解决方案。我在 wwwRoot 之外创建了新的文件夹 Intranet 来提供我的静态内容,但我仍然需要知道如何授权用户并提供基于角色的静态文件。

【问题讨论】:

    标签: asp.net-core security azure-active-directory static-files


    【解决方案1】:

    正如the document 所说,您可以将静态文件存储在 wwwroot 之外以及静态文件中间件可访问的任何目录(例如:MyStaticFiles 文件夹,如this),然后,您可以通过操作方法为它们提供服务应用授权并返回 FileResult 对象:

        [Authorize(Roles = "User")]
        public IActionResult BannerImage()
        {
            var filePath = Path.Combine(
                _env.ContentRootPath, "MyStaticFiles", "images", "Image1.jpg");
    
            return PhysicalFile(filePath, "image/jpeg");
        }
    

    然后,您可以点击以下链接查看图片:

       <a asp-action="BannerImage" asp-controller="Home">View Image</a>
    

    [注意] 使用上述方法后,如果授权无效,请尝试清除缓存,可能与浏览器缓存有关。此外,如果您遇到“HTTP Error 404.15 - Not Found”错误,请尝试为其他控制器操作方法添加[AllowAnonymous] 属性。

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      相关资源
      最近更新 更多