【发布时间】:2021-07-07 15:38:35
【问题描述】:
我有一个项目,我目前正在从 .NET Core Web API wwwroot 文件夹中提供静态文件。它在 startup.cs 中使用 app.UseStaticFiles() 命令,它非常适合为我们的 SPA 前端提供服务。但是,我们有一个要求,我们需要一个对互联网开放的控制器调用,而其余的则被 IP 地址锁定。我似乎无法弄清楚的一件事是如何防止 Web API 将 wwwroot 文件夹中的静态文件提供给互联网,因为这些文件仅供内部使用。
我知道已经内置了通过 IP 地址锁定控制器的中间件,并且有很多方法可以自己制作,但我需要特别防止 wwwroot 文件夹中的前端 SPA 被互联网看到,同时只有少数几个控制器调用可以访问互联网。
有没有办法做到这一点?
【问题讨论】:
-
最好的做法是把你的web服务器隐藏在一些像nginx这样的代理后面并通过配置来解决,你的项目应该专注于业务逻辑而不是基础设施。
-
this 有帮助吗?
-
@AliK 我已经研究过使用该方法,我需要提供三个文件,即 html、css 和 javascript。我还没有找到一种方法可以从一个控制器调用中发送所有三个文件,否则这将是一个可行的解决方案。
-
你可以使用这个 Nuget:github.com/dustinmoris/Firewall。它添加了带有防火墙规则的可配置中间件,例如允许的 IP 地址。您在
startup.cs的配置中设置规则。您应该将app.UseFirewall();放在您的app.UseStaticFiles()之前以及它们之前app.UseEndpoints()因为您只想将静态文件限制为防火墙规则。
标签: c# asp.net-core-webapi asp.net-core-3.1