我有一个 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 中添加一个
这里有类似的吗?
您可以尝试在
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