我有一个“ ClearAllData”控制器端点,该端点在调用时清除SQL数据库中的所有数据。客户端出于测试目的请求此功能,但我想在生产中禁用此功能。我将如何去做呢?我正在使用.NET Core 2.2和C#
答案 0 :(得分:2)
您可以添加如下所示的资源过滤器:
public class DevelopmentOnlyAttribute : Attribute, IResourceFilter
{
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
public void OnResourceExecuting(ResourceExecutingContext context)
{
var env = context.HttpContext.RequestServices.GetRequiredService<IHostingEnvironment>();
if (!env.IsDevelopment())
{
context.Result = new NotFoundResult();
}
}
}
然后,只需使用此属性装饰动作:
[DevelopmentOnly]
public IActionResult ClearAllData()
答案 1 :(得分:1)
您可以尝试使用CORS。在此端点上仅允许特定客户端。 首先将策略配置为接受特定来源:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowMyOrigin",
builder => builder.WithOrigins("links to origins"));
});
}
之后,您可以将策略应用于控制器方法:
[EnableCors(“ AllowMyOrigin”)]