如何保护 Blazor Web 应用程序中的静态资源?

问题描述 投票:0回答:1

我有一个 Blazor webapp SSR+服务器,使用 blazor 8 webapp 模板提供的新身份验证进行保护。

问题是如何保护 wwwroot 文件夹下的静态文件。不必保护整个 wwwroot 文件夹,因为否则用于登录页面和其他(重置密码、电子邮件确认等)的 html(例如 css、js、png 等)使用的资源将无法工作。确实这种解决方案不可行。

例如。我想保护文档和图像,但不保护资产(和子文件夹)

wwwroot
|-- assets
    |-- css
    |-- siteimages
    |-- js
|-- docs
    |-- subfolders
|-- images
    |-- subfolders

我知道我可以搬到外面并在服务器端处理它们(例如,文档和图像可以存在于 wwwroot 之外的 App_Data 中),但例如,如果我有一个提供上传图像功能的 html 迷你编辑器,我必须将其存储在 wwwroot 下为了让像“/images/foo.jpg”这样的相对 URL 能够在编辑器和使用位置正确显示。

在过去的网络表单中,我记得您可以在 web.config 中添加一个 ,您可以通过允许/拒绝授权来保护或允许......

这里有类似的吗?

asp.net-core blazor
1个回答
0
投票

您可以尝试在

app.UseStaticFiles()
之前添加以下中间件来防止某些路径被访问。

app.Use(async (context, next) =>
{
    var path = context.Request.Path;
    if (path.StartsWithSegments("/docs") || path.StartsWithSegments("/images"))
    {
        await context.Response.WriteAsync("path not allowed");
    }
    else
    {
        await next.Invoke();
    }
});
app.UseStaticFiles();

参考:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-8.0

© www.soinside.com 2019 - 2024. All rights reserved.