Ver Fonte

make login lockout duration configurable (#11699)

Kazuhisa Wada há 4 meses atrás
pai
commit
e20161b3de
3 ficheiros alterados com 8 adições e 1 exclusões
  1. 2 0
      api/.env.example
  2. 5 0
      api/configs/feature/__init__.py
  3. 1 1
      api/services/account_service.py

+ 2 - 0
api/.env.example

@@ -435,3 +435,5 @@ CREATE_TIDB_SERVICE_JOB_ENABLED=false
 
 
 # Maximum number of submitted thread count in a ThreadPool for parallel node execution
 # Maximum number of submitted thread count in a ThreadPool for parallel node execution
 MAX_SUBMIT_COUNT=100
 MAX_SUBMIT_COUNT=100
+# Lockout duration in seconds
+LOGIN_LOCKOUT_DURATION=86400

+ 5 - 0
api/configs/feature/__init__.py

@@ -485,6 +485,11 @@ class AuthConfig(BaseSettings):
         default=60,
         default=60,
     )
     )
 
 
+    LOGIN_LOCKOUT_DURATION: PositiveInt = Field(
+        description="Time (in seconds) a user must wait before retrying login after exceeding the rate limit.",
+        default=86400,
+    )
+
 
 
 class ModerationConfig(BaseSettings):
 class ModerationConfig(BaseSettings):
     """
     """

+ 1 - 1
api/services/account_service.py

@@ -420,7 +420,7 @@ class AccountService:
         if count is None:
         if count is None:
             count = 0
             count = 0
         count = int(count) + 1
         count = int(count) + 1
-        redis_client.setex(key, 60 * 60 * 24, count)
+        redis_client.setex(key, dify_config.LOGIN_LOCKOUT_DURATION, count)
 
 
     @staticmethod
     @staticmethod
     def is_login_error_rate_limit(email: str) -> bool:
     def is_login_error_rate_limit(email: str) -> bool: