【发布时间】:2018-08-01 23:00:13
【问题描述】:
<img src="~/static/img1.jpg" />
我使用this article 启用静态文件,但这些代码不起作用。
[Authorize]
public IActionResult BannerImage()
{
var file = Path.Combine(Directory.GetCurrentDirectory(),
"MyStaticFiles", "images", "banner1.svg");
return PhysicalFile(file, "image/svg+xml");
}
another article 也没有帮助。 但我不知道如何让图片只对授权用户可用?
更新
我添加了将 WWWROOT 配置为静态目录来设置缓存头
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "WWWROOT"))
});
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "MyStaticFiles")),
OnPrepareResponse = x =>
{
if (x.Context.User.Identity.IsAuthenticated)
{
return;
}
x.Context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
}
});
然后授权停止工作。
【问题讨论】:
-
你也可以在Static file authorization文档中找到答案
-
我将此链接添加到我的问题中。链接中的建议无效。
-
设置,这不是重复的,因为他不想引入一些复杂的路径验证。
-
你必须只有一个 usestaticfile 调用。将它们结合起来,一切都应该起作用。我不确定您是否能够使用两个不同的目录。静态文件应始终位于 wwwroot 中。
-
@alsami,我的静态文件位于项目之外。当我使用唯一一个 UseStaticFiles 授权时,WWROOT 目录的 css/js 文件也被阻止。
标签: asp.net-core