簡體   English   中英

ASP.NET 僅來自 API 的一條路由中的核心速率限制錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM