首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何只向授权用户提供静态文件?

如何只向授权用户提供静态文件?
EN

Stack Overflow用户
提问于 2016-04-22 00:50:23
回答 5查看 23.1K关注 0票数 39

我有一个Excel电子表格集合,我希望在我的ASP.NET 5 webapp应用程序中仅向授权用户提供这些表格。

  1. 我应该将文件存储在哪里?我假设在wwwroot中(例如,wwwroot中的wwwroot/files).
  2. If ),我如何只允许授权用户访问?(我希望从控制器中将它们作为授权FileResult提供,但这仍然使文件可以通过我相信的URL直接访问。)
  3. 如何通过控制器中的FileResult操作引用wwwroot中的位置?

非常感谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-04-22 01:06:31

是的,它们应该放在wwwroot中。目前还没有内置的方法来保护wwwroot目录。但是创建一个中间件模块来完成它是非常简单的。有一个简单易用的教程here

如果您不熟悉开发中间件,我发布了一个GitHub项目,展示了如何通过三个简单的步骤创建中间件。您可以下载项目here

你不需要一个控制器来访问静态文件。

票数 31
EN

Stack Overflow用户

发布于 2018-12-19 14:39:11

对于检索文件时的身份验证检查:

        app.UseStaticFiles(new StaticFileOptions()
        {
            OnPrepareResponse = (context) =>
            {
                if (!context.Context.User.Identity.IsAuthenticated && context.Context.Request.Path.StartsWithSegments("/excelfiles"))
                {
                    throw new Exception("Not authenticated");
                }
            }
        });
票数 14
EN

Stack Overflow用户

发布于 2017-05-22 18:08:29

在.net内核中,创建一个与wwwroot相同级别的专用目录www,并使用以下代码:

public HomeController(IHostingEnvironment hostingEnvironment)
{
    _hostingEnvironment = hostingEnvironment;
}

[Authorize(Roles = "SomeRole")]
public IActionResult Performance()
{
    return PhysicalFile(Path.Combine(_hostingEnvironment.ContentRootPath,
                                     "www", "MyStaticFile.pdf"), "application/pdf");
}

基于以下答案(针对.netCore):static file authorization

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36775942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档