diff --git a/src/djangoblog-master/accounts/utils.py b/src/djangoblog-master/accounts/utils.py index 4b94bdf..0657d0e 100644 --- a/src/djangoblog-master/accounts/utils.py +++ b/src/djangoblog-master/accounts/utils.py @@ -10,6 +10,7 @@ from djangoblog.utils import send_email _code_ttl = timedelta(minutes=5) +# xm: 发送验证邮件函数 def send_verify_email(to_mail: str, code: str, subject: str = _("Verify Email")): """发送重设密码验证码 Args: @@ -17,12 +18,15 @@ def send_verify_email(to_mail: str, code: str, subject: str = _("Verify Email")) subject: 邮件主题 code: 验证码 """ + # xm: 构建邮件HTML内容,包含验证码信息 html_content = _( "You are resetting the password, the verification code is:%(code)s, valid within 5 minutes, please keep it " "properly") % {'code': code} + # xm: 调用发送邮件函数发送验证码 send_email([to_mail], subject, html_content) +# xm: 验证验证码函数 def verify(email: str, code: str) -> typing.Optional[str]: """验证code是否有效 Args: @@ -34,16 +38,22 @@ def verify(email: str, code: str) -> typing.Optional[str]: 这里的错误处理不太合理,应该采用raise抛出 否测调用方也需要对error进行处理 """ + # xm: 从缓存中获取对应邮箱的验证码 cache_code = get_code(email) + # xm: 比较输入的验证码和缓存中的验证码是否一致 if cache_code != code: return gettext("Verification code error") +# xm: 设置验证码到缓存函数 def set_code(email: str, code: str): """设置code""" + # xm: 使用Django缓存系统存储验证码,设置过期时间 cache.set(email, code, _code_ttl.seconds) +# xm: 从缓存获取验证码函数 def get_code(email: str) -> typing.Optional[str]: """获取code""" + # xm: 从Django缓存系统中获取指定邮箱的验证码 return cache.get(email)