通过user_id从服务器会话限制Flask API的速率



我正在尝试为每个用户设置一个Flask API限制器。下面的代码将一个IP地址限制为每分钟3个请求。

from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
limiter = Limiter(
key_func=get_remote_address, #limit by IP Address
storage_uri="redis://localhost:6379",
strategy="moving-window"
)
@api.route('/api/submit-code')
@limiter.limit('3 per minute')
def submit_code():
user_id = session.get("user_id")
if not user_id:
return jsonify({"error": "Unauthorized"}), 401

如何更改此设置以限制用户而不是IP地址?我正在使用服务器会话,所以我不确定如何在限制器装饰器中包含user_id

我最终修改了装饰符如下:

@limiter.limit('3 per minute', key_func = lambda : session.get("user_id"))

限制符不适用于未登录的用户。您可以简单地在函数中添加检查,例如OP.

最新更新