<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      TOP

      簡單實現的flask 帶限頻的apikey簽發續簽的demo

      pip install flask flask-limiter
      import time
      
      from flask import Flask, request, jsonify
      from flask_limiter import Limiter
      from flask_limiter.util import get_remote_address
      from functools import wraps
      
      app = Flask(__name__)
      
      limiter = Limiter(
          app=app,
          key_func=get_remote_address,
          default_limits=["100 per day", "10 per hour"]  # 全局默認限頻規則
      )
      
      # 模擬存儲token, 真的用的話用mysql存儲然后關系字段自己隨便設計吧, 這里僅僅用一個用戶名和過期, 這里用戶名是為了標示一下信息, 萬一有人泄露了方便查, 或者禁用
      VALID_API_KEYS = {
          "token名字用對稱加密進行生成一串隨機字符": ["比如這里放用戶名", "這放這token的過期時間戳"],
          # 比如如下的模擬數據
          "db27ca0ff08ce7519bbc45dd93ef2e4c488a279d55d7dd2612b7edd11586264e5f75f279b227c8819f8e409079ca4b89":
              ["羊駝", time.time() + 3600],
      }
      
      
      def require_apikey(view_func):
          """驗證token的自定義裝飾器"""
      
          @wraps(view_func)
          def decorated_function(*args, **kwargs):
              # 從請求頭中獲取APIKey
              token = request.headers.get('X-API-KEY')
              if token and token in VALID_API_KEYS and time.time() < VALID_API_KEYS[token][1]:
                  return view_func(*args, **kwargs)
              else:
                  return jsonify({"error": "老兄你憑證呢?!"}), 401
          return decorated_function
      
      
      # 創建token
      @app.route('/create_token')
      def create_token():
          global VALID_API_KEYS
          # 模擬生成一個token記錄, 過期時間為1小時
          token_string = f"token_{time.time()}"
          exp_time = time.time() + 3600
          VALID_API_KEYS[token_string] = ["隨便寫個名字吧", exp_time]
          return jsonify({"status": "success", "message": "", "data": {
              "token": token_string,
              "exp": exp_time,
          }})
      
      
      # 續簽token
      @app.route('/renew_token')
      @require_apikey
      def renew_token():
          token_string = request.headers.get('X-API-KEY')
      
          global VALID_API_KEYS
          exp_time = time.time() + 3600
          if VALID_API_KEYS.get(token_string):
              VALID_API_KEYS[token_string][1] = exp_time  # 更細時間為往后一小時
          return jsonify({"status": "success", "message": "", "data": {
              "token": token_string,
              "exp": exp_time,
          }})
      
      
      @app.route('/by_5_per_minute')
      @limiter.limit("5 per minute")  # 對此端點單獨設置限頻:每分鐘5次
      @require_apikey  # 需要有效的APIKey
      def protected_route():
          return jsonify({"status": "success", "message": "", "data": "hello~~~(by_5_per_minute)"})
      
      
      @app.route('/hello')
      def unprotected_route():
          return jsonify({"status": "success", "message": "", "data": "hello~~~"})
      
      
      @app.route('/by_1_per_second')
      @require_apikey
      @limiter.limit("1 per second")  # 非常嚴格的限頻:每秒1次
      def status_check():
          return jsonify({"status": "success", "message": "", "data": "hello~~~(by_1_per_second)"})
      
      
      if __name__ == '__main__':
          app.run(debug=True)

       

      posted @ 2025-09-01 18:38  羊駝之歌  閱讀(14)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品亚洲一区二区三区| 色综合色综合色综合久久| 国产色无码专区在线观看| 国产无套内射又大又猛又粗又爽| 日韩国产中文字幕精品| 性一交一乱一伦| 国产精品一区二区三区自拍| 亚洲免费观看视频| 色综合视频一区二区三区| 东京热大乱系列无码| 国产精品久久久久久亚洲色| 国产99青青成人A在线| 成人拍拍拍无遮挡免费视频| 久久久久免费看成人影片| 建瓯市| 久久婷婷大香萑太香蕉AV人| 国产免费播放一区二区三区| 激情动态图亚洲区域激情| 制服丝袜长腿无码专区第一页| 国产91丝袜在线播放动漫| 小嫩批日出水无码视频免费| 国产中文字幕一区二区| 男人的天堂av社区在线| 双牌县| 丰满人妻熟妇乱又精品视| 成 人色 网 站 欧美大片在线观看| 99精品国产一区二区三区不卡| 91超碰在线精品| 日韩精品一区二区三区在| 精品无码午夜福利理论片| 青青草无码免费一二三区| 亚洲成人av在线系列| 中文字幕av无码免费一区| 亚洲精品日韩久久精品| 大渡口区| 麻豆一区二区三区精品蜜桃| 国精一二二产品无人区免费应用| 9久9久热精品视频在线观看| 欧美精品v国产精品v日韩精品| 狠狠色噜噜狠狠狠狠av不卡| 日韩丝袜亚洲国产欧美一区|