ASP.NET CORE中基于角色的静态内容访问



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

我知道这是对ASP.NET Core中.html文件的安全请求的重复,但我找不到任何实现该解决方案的方法。我已经在wwwRoot之外创建了新的文件夹intranet来提供我的静态内容,但仍然需要知道如何授权用户并提供基于角色的静态文件。

正如文档所说,您可以将静态文件存储在wwwroot和静态文件中间件可访问的任何目录之外(例如:MyStaticFiles文件夹,类似于此(,然后,您可以通过应用授权的操作方法为其提供服务,并返回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错误404.15-未找到";错误,请尝试为其他控制器操作方法添加[AllowAnonymous]属性。

相关内容

  • 没有找到相关文章