[英]ASP.NET Core rate limiting errors in only one route from the API
我正在開發一個帶有 ASP.NET 核心的 API 沒有身份,我想限制登錄路由中失敗請求的數量。
我無法發布完整的代碼,但我使用的結構是這樣的:
[HttpPost("login")]
public async Task<ActionResult<AuthViewModel>> Login([FromBody] UserLoginViewModel userLoginVm)
{
var auth = await service.Login(userLoginVm);
if (auth == null)
{
return BadRequest("Wrong login.");
}
return Ok(auth);
}
你應該解釋你的目標。
您想通過Username
名或IP
限制登錄請求嗎?
If you want to limit request by IP
you can use AspNetCoreRateLimiter
package to limit your API
based on IP
or ClientId
另一種選擇是Redis INCR 。 通過INCR
每次您檢查用戶名和密碼時,您都可以調用INCR
方法,它會返回一個integer
值,該值向您顯示key
調用方法的計數。
(Redis key can be like this: 'Username_IP')
如果 Redis 的結果超出您的限制,您可以阻止該請求。
如果您使用的是AspNetCoreIdentity
,您可以在最大訪問嘗試失敗后啟用鎖定:
services.AddIdentity<IdentityUser, IdentityRole>(identityOptions =>
{
//Lockout Settings
identityOptions.Lockout.MaxFailedAccessAttempts = 5;
identityOptions.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromDays(1);
identityOptions.Lockout.AllowedForNewUsers = false;
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.