【问题标题】:Secure requests to .html files in ASP.NET Core在 ASP.NET Core 中保护对 .html 文件的请求
【发布时间】:2019-03-14 15:11:59
【问题描述】:

我有一个用 ASP.NET Core 编写的 Web 应用程序。通过检查 Session 是否包含在第一次请求时从 Web 服务获得的 Json 对象来完成身份验证。 (使用公钥/私钥等)

在这个 Json 对象内部是一个数字,对应于 Web 根文件夹下的物理文件夹。

因此,当用户访问此文件夹中的文件时,它应该检查是否允许这样做。事实上,这个文件夹中有一个完整的静态网站,因此在提供服务之前,必须检查对 .html 文件的每个请求。

我想这可以使用一些自定义中间件来完成,但我不确定从哪里开始。

有人知道如何完成这项工作吗?

【问题讨论】:

    标签: asp.net-core authorization middleware static-files


    【解决方案1】:

    唯一真正的方法是通过 授权的操作来代理 HTML 文件。例如。与其直接链接到foo.html,不如直接链接到/proxy?file=foo.html,其中/proxy 将是一个检查用户是否真正有权查看foo.html 的操作。

    docs 中列出了类似的方法:

    静态文件中间件不提供授权检查。它提供的任何文件,包括 wwwroot 下的文件,都可以公开访问。根据授权提供文件:

    • 将它们存储在 wwwroot 和静态文件中间件可访问的任何目录之外。

    • 通过应用授权的操作方法为他们提供服务。返回一个 FileResult 对象:

    public IActionResult BannerImage()
    {
        var file = Path.Combine(Directory.GetCurrentDirectory(), 
                                "MyStaticFiles", "images", "banner1.svg");
    
        return PhysicalFile(file, "image/svg+xml");
    }
    

    【讨论】:

    • 是的,我在文档的某处也看到了这种方法。但是对于一个 .html 文件来说这不会有问题,但是有多个文件夹具有不同的 .html 文件,并且每个 .html 文件都包含指向其他文件的链接,所以我需要有一些方法来检查每个请求。就像在标准 .NET 版本中一样,我猜我可能会使用 HttpModule 或 HttpHandler 来做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多