亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django REST framework 如何實現內置訪問頻率控制

發布時間:2020-09-15 22:12:33 來源:腳本之家 閱讀:198 作者:little_pd 欄目:開發技術

對匿名用戶采用 IP 控制訪問頻率,對登錄用戶采用 用戶名 控制訪問頻率。

from rest_framework.throttling import SimpleRateThrottle

class VisitThrottle(SimpleRateThrottle):
  """匿名用戶訪問頻率限制"""
  scope = "AnonymousUser" # 隨便寫的,可以作為key保存在緩存中

  def get_cache_key(self, request, view):
    return self.get_ident(request)

class UserThrottle(SimpleRateThrottle):
  """登錄用戶訪問頻率限制"""
  scope = "LoginUser"

  def get_cache_key(self, request, view):return request.user

可以配置redis

CACHES = {
  "default": {
    "BACKEND": "django_redis.cache.RedisCache",
    "LOCATION": "redis://127.0.0.1:6379",
    "OPTIONS": {
      "CLIENT_CLASS": "django_redis.client.DefaultClient",
      "CONNECTION_POOL_KWARGS": {"max_connections": 100}
      # "PASSWORD": "密碼",
    }
  }
}

匿名用戶的訪問頻率限制,這里設置在全站下,如下:

REST_FRAMEWORK = {
  "DEFAULT_THROTTLE_CLASSES": ["appxx.utils.VisitThrottle"],
  "DEFAULT_THROTTLE_RATES":{
      "AnonymousUser": "3/m", # 匿名用戶一分鐘可以訪問3次,秒(s)、分(m)、時(h)、天(d)
      "LoginUser": "10/m", # 登錄用戶一分鐘可以訪問10次
    }
}

登錄用戶的訪問頻率設置在單獨的視圖中,而視圖依賴身份認證才能辨別用戶是否登陸了,所以設置如下:

class BookViewSet(viewsets.ModelViewSet):
  authentication_classes = [TokenAuthentication]
  throttle_classes = [UserThrottle]
  queryset = models.Book.objects.all()
  serializer_class = serializers.BookSerializer

用戶身份認證如下:

from rest_framework import authentication
from rest_framework import exceptionsfrom appxx import models

class TokenAuthentication(authentication.BaseAuthentication):
  """身份認證"""
  def authenticate(self, request):
    token = request.GET.get("token")
    obj = models.UserAuthToken.objects.filter(token=token).first()
    if not obj:
      raise exceptions.AuthenticationFailed("驗證失敗!")
    else:
      return (obj.user.username, obj.token)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萍乡市| 辽中县| 灵丘县| 商河县| 凤城市| 岳普湖县| 金阳县| 凤山县| 霍邱县| 台南县| 雷州市| 彩票| 彩票| 呼伦贝尔市| 余干县| 柳州市| 维西| 黎川县| 华宁县| 彝良县| 大荔县| 册亨县| 崇信县| 青海省| 旬邑县| 六盘水市| 大理市| 东明县| 北碚区| 建宁县| 南川市| 承德市| 神木县| 新建县| 布尔津县| 勃利县| 泰安市| 中阳县| 丽江市| 金门县| 突泉县|