使用邮箱验证码登陆的后端业务代码
以下是使用邮箱验证码登陆的后端业务代码示例:
- 发送验证码
import random
import smtplib
from email.mime.text import MIMEText
def send_verification_code(email):
# 生成6位随机验证码
code = str(random.randint(100000, 999999))
# 构造邮件内容
msg = MIMEText(f"您的验证码是:{code},有效期为5分钟。", "plain", "utf-8")
msg["Subject"] = "登录验证码"
msg["From"] = "your_email@your_domain.com"
msg["To"] = email
# 发送邮件
try:
smtp = smtplib.SMTP("smtp.your_domain.com")
smtp.login("your_email@your_domain.com", "your_email_password")
smtp.sendmail("your_email@your_domain.com", [email], msg.as_string())
smtp.quit()
return code
except Exception as e:
print(e)
return None
- 验证验证码
import time
def verify_code(email, code):
# TODO: 从数据库中获取email对应的code和expire_time
stored_code = "123456"
expire_time = time.time() + 300 # 验证码有效期为5分钟
# 判断验证码是否正确和是否过期
if code == stored_code and time.time() < expire_time:
# TODO: 更新数据库中的expire_time字段
return True
else:
return False
- 登录
def login(email):
# TODO: 验证用户是否存在
if user_exists(email):
code = send_verification_code(email)
if code:
# TODO: 将验证码和过期时间存入数据库
# 返回一个包含验证码有效期的dict
return {"code": code, "expire_time": time.time() + 300}
else:
# 邮箱发送失败
return None
else:
# 用户不存在
return None
以上仅为示例代码,具体实现需要根据具体业务需求进行调整。需要注意的是,发送邮件需要使用SMTP协议,需要提前配置好SMTP服务器和邮箱账号密码等信息。同时,验证码的生成和验证需要考虑安全性问题,避免被恶意攻击。
原文地址: https://www.cveoy.top/t/topic/bqZL 著作权归作者所有。请勿转载和采集!