chenjunkai 7 жил өмнө
parent
commit
75c28b37e3

+ 1 - 6
Ansjer/urls.py

@@ -125,12 +125,7 @@ urlpatterns = [
     url(r'^admin/userIDs$', AdminManage.getUserIds, name=u'getUserIds'),
     # 统计访问日志路径
     path('access/staticPath/', AccessLog.statisticsPath),
-
-
-
-
-
-
+    url('Test', Test.RqTest, name=u'rTest'),
 
     # 测试专用api
     url('Test', Test.Test.as_view(), name=u'Test'),

+ 12 - 1
Controller/Test.py

@@ -27,6 +27,14 @@ import requests
 from Service.ModelService import ModelService
 from django.middleware.csrf import get_token
 from django.http import JsonResponse
+from ratelimit.decorators import ratelimit
+
+
+@ratelimit(key='ip', rate='1/m')
+def RqTest(request):
+    was_limited = getattr(request,'limited', False)
+    var_dump(was_limited)
+    return ResponseJSON(0)
 
 class Test(View):
     '''
@@ -41,9 +49,12 @@ class Test(View):
     def dispatch(self, *args, **kwargs):
         return super(Test, self).dispatch(*args, **kwargs)
 
+    @ratelimit(key='ip', rate='1/m')
     # 查询
     def get(self, request, *args, **kwargs):
-
+        was_limited = getattr(request, 'limited', False)
+        var_dump(was_limited)
+        return ResponseJSON(0)
         post_data = {
             'code': request.GET.get('code', None),
             'client_id': 'co',

+ 11 - 6
Controller/UserManger.py

@@ -21,6 +21,8 @@ from django.utils import timezone
 from Ansjer.config import *
 from Service.ResponseService import *
 from Service.TemplateService import TemplateService
+from ratelimit.decorators import ratelimit
+
 '''
 http://13.56.215.252:82/account/authcode?userName=123456&language=en&mid=1234
 http://13.56.215.252:82/account/authcode?userEmail=123456&language=en&mid=1234
@@ -31,7 +33,11 @@ class getAuthCodeView(TemplateView):
     def dispatch(self, *args, **kwargs):
         return super(getAuthCodeView, self).dispatch(*args, **kwargs)
 
+    @ratelimit(key='ip', rate='2/m')
     def post(self, request, *args, **kwargs):
+        was_limited = getattr(request, 'limited', False)
+        if was_limited is True:
+            return ResponseJSON(5)
         request.encoding ='utf-8'
         username = request.POST.get('userName', None)
         useremail = request.POST.get('userEmail', None)
@@ -42,7 +48,11 @@ class getAuthCodeView(TemplateView):
         mid = request.POST.get('mid', sessionID)
         return self.ValidationError(username,useremail,language,mid)
 
+    @ratelimit(key='ip', rate='2/m')
     def get(self, request, *args, **kwargs):
+        was_limited = getattr(request, 'limited', False)
+        if was_limited is True:
+            return ResponseJSON(5)
         request.encoding = 'utf-8'
         username = request.GET.get('userName', None)
         useremail = request.GET.get('userEmail', None)
@@ -86,11 +96,7 @@ class getAuthCodeView(TemplateView):
 
         if validateFlag is True:
             identifyingCode = CommonService.get_redis_data(key=mid+'_identifyingCode')
-            getcodename = CommonService.get_redis_data(key=mid + '_getcodename')
-
-            if getcodename is not False:
-                getcodename = getcodename.decode("utf-8")
-            if identifyingCode is False or getcodename != val:
+            if identifyingCode is False:
                 identifyingCode = RandomStr(6, True)
                 if type == 1:
                     CommonService.set_redis_data(key=mid + '_identifyingCode', val=identifyingCode, expire=300)
@@ -110,7 +116,6 @@ class getAuthCodeView(TemplateView):
                     send_res = True
                     if send_res is True:
                         CommonService.set_redis_data(key=mid+'_identifyingCode', val=identifyingCode, expire=300)
-                        CommonService.set_redis_data(key=mid+'_getcodename', val=val, expire=300)
                         return ResponseJSON(0, {'identifyingCode': identifyingCode},language=language)
                     else:
                         return ResponseJSON(44,language=language)

+ 6 - 3
Service/ResponseService.py

@@ -18,12 +18,14 @@ def ResponseData(code, res={},*args, **kwargs):
 
         if userID is not None:
             dn = Device_User.objects.filter(userID=userID).values('language')
-            if dn[0]['language']:
-                LANGUAGE = dn[0]['language']
+            if dn.exists():
+                if dn[0]['language']:
+                    LANGUAGE = dn[0]['language']
     # print(__file__)
     data_en = {
         0: 'Success',
         4: 'Operation failed',
+        5: 'Please try again one minute later!',
         10: res,
         13: 'This device does not exist !',
         14: 'This device does not belong to the user',
@@ -110,7 +112,7 @@ def ResponseData(code, res={},*args, **kwargs):
         501: 'Update database error!',
         502: 'In the database, the parameter fields do not exist!',
         600: 'You do not have permission to query all user information!',
-        601: 'You have no permission to delete user! 您没有权限删除用户!',
+        601: 'You have no permission to delete user!',
         602: 'You have no permission to modify the user information!',
         603: 'The User account does not have permission to do this!',
         604: 'You do not have permission to query all user equipmnet information!',
@@ -169,6 +171,7 @@ def ResponseData(code, res={},*args, **kwargs):
     data_cn = {
         0: '成功',
         4: '操作失败',
+        5: '请一分钟后再尝试',
         10: res,
         13: '该设备不存在',
         14: '该设备不属于您',