问题描述
我制作了一个Json Web令牌来保护我的服务,但是现在有人使用我的登录服务在我的数据库上进行了很多查询。有没有办法阻止进入另一个服务器的查询?
对我的服务器的查询或攻击来自不同的ip和不同的国家/地区。
我使用angular 9和asp.net内核。
// POST: api/Login
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> Login(UsuarioLogin usuarioLogin)
{
var _userInfo = await AutenticarUsuarioAsync(usuarioLogin.Usuario,usuarioLogin.Password);
if (_userInfo != null)
{
return Ok(new { token = GenerarTokenJWT(_userInfo) });
}
else
{
return Unauthorized();
}
}
解决方法
Enable Cross-Origin Requests (CORS) in ASP.NET Core
有三种启用CORS的方法:
- 在使用named policy或默认策略的中间件中。
- 使用endpoint routing。
- 具有EnableCors属性。
具有命名策略和中间件的CORS
public class Startup
{
readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,builder =>
{
builder.WithOrigins("http://example.com","http://xxxx.com");
});
});
// services.AddResponseCaching();
services.AddControllers();
}
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors(MyAllowSpecificOrigins);
// app.UseResponseCaching();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}