mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-08-19 14:47:29 +00:00
perf: 修改验证码多次验证
This commit is contained in:
parent
39affc4989
commit
3352f78e01
@ -1,14 +1,13 @@
|
|||||||
from django.core.cache import cache
|
|
||||||
from django.conf import settings
|
|
||||||
from django.core.mail import send_mail
|
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
|
from django.conf import settings
|
||||||
|
from django.core.cache import cache
|
||||||
|
from django.core.mail import send_mail
|
||||||
|
|
||||||
from common.sdk.sms.exceptions import CodeError, CodeExpired, CodeSendTooFrequently
|
|
||||||
from common.sdk.sms.endpoint import SMS
|
|
||||||
from common.exceptions import JMSException
|
from common.exceptions import JMSException
|
||||||
from common.utils.random import random_string
|
from common.sdk.sms.endpoint import SMS
|
||||||
|
from common.sdk.sms.exceptions import CodeError, CodeExpired, CodeSendTooFrequently
|
||||||
from common.utils import get_logger
|
from common.utils import get_logger
|
||||||
|
from common.utils.random import random_string
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = get_logger(__file__)
|
||||||
|
|
||||||
@ -27,6 +26,7 @@ class SendAndVerifyCodeUtil(object):
|
|||||||
self.timeout = timeout
|
self.timeout = timeout
|
||||||
self.backend = backend
|
self.backend = backend
|
||||||
self.key = key or self.KEY_TMPL.format(target)
|
self.key = key or self.KEY_TMPL.format(target)
|
||||||
|
self.verify_key = self.key + '_verify'
|
||||||
self.other_args = kwargs
|
self.other_args = kwargs
|
||||||
|
|
||||||
def gen_and_send_async(self):
|
def gen_and_send_async(self):
|
||||||
@ -47,6 +47,11 @@ class SendAndVerifyCodeUtil(object):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
def verify(self, code):
|
def verify(self, code):
|
||||||
|
times = cache.get(self.verify_key, 0)
|
||||||
|
if times >= 3:
|
||||||
|
self.__clear()
|
||||||
|
raise CodeExpired
|
||||||
|
cache.set(self.verify_key, times + 1, timeout=self.timeout)
|
||||||
right = cache.get(self.key)
|
right = cache.get(self.key)
|
||||||
if not right:
|
if not right:
|
||||||
raise CodeExpired
|
raise CodeExpired
|
||||||
@ -59,6 +64,7 @@ class SendAndVerifyCodeUtil(object):
|
|||||||
|
|
||||||
def __clear(self):
|
def __clear(self):
|
||||||
cache.delete(self.key)
|
cache.delete(self.key)
|
||||||
|
cache.delete(self.verify_key)
|
||||||
|
|
||||||
def __ttl(self):
|
def __ttl(self):
|
||||||
return cache.ttl(self.key)
|
return cache.ttl(self.key)
|
||||||
|
Loading…
Reference in New Issue
Block a user