我正在使用以下nuget包:https://github.com/msmolka/ZNetCS.AspNetCore.IPFiltering
我正在使用它来阻止试图强行验证我的应用程序身份的IP。 黑名单是在appsetting.json中定义的,我不知道如何在运行时动态地对其进行修改,例如,添加具有错误密码的IP。
我的实际操作方式不起作用,因为即使IP已正确保存在conf中,我仍然可以连接...
Startup.cs
namespace Sondage
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddIPFiltering(this.Configuration.GetSection("IPFiltering"));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseIPFiltering();
app.UseHttpsRedirection();
app.UseMvc();
}
}
}
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"IPFiltering": {
"DefaultBlockLevel": "None",
"HttpStatusCode": 404,
"Blacklist": [],
"IgnoredPaths": [ "GET:/ignoreget", "*:/ignore" ]
}
}
我的控制器的一部分:
[Route("api/authenticate")]
[ApiController]
public class authenticationController : ControllerBase
{
private IConfiguration _configuration;
public authenticationController(IConfiguration Configuration)
{
_configuration = Configuration;
}
[HttpPost]
public string authent(string value)
{
Dictionary<string, string> result = new Dictionary<string, string>();
IPAddress ip_addr = HttpContext.Connection.RemoteIpAddress;
if(!Globals.tryByIP.TryGetValue(ip_addr, out int numberOfTry)) {
Globals.tryByIP.Add(ip_addr, 0);
} else
{
if(numberOfTry>=0)
{
Console.WriteLine("-----");
_configuration.GetSection("IPFiltering")["Blacklist"] = ip_addr.ToString();
Console.WriteLine(_configuration.GetSection("IPFiltering")["Blacklist"]);
}
}