fix bug
This commit is contained in:
parent
26141cce48
commit
08c648bc88
@ -26,41 +26,43 @@ from app.models.address import AddressDB, AddressInfo
|
|||||||
from app.models.user import UserUpdateRoles, UserUpdateDeliveryCommission
|
from app.models.user import UserUpdateRoles, UserUpdateDeliveryCommission
|
||||||
from app.models.order import ShippingOrderDB, OrderStatus
|
from app.models.order import ShippingOrderDB, OrderStatus
|
||||||
from app.core.redis_client import redis_client
|
from app.core.redis_client import redis_client
|
||||||
|
import logging
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
@router.post("/send-code")
|
@router.post("/send-code")
|
||||||
async def send_verify_code(request: VerifyCodeRequest):
|
async def send_verify_code(request: VerifyCodeRequest):
|
||||||
"""发送验证码"""
|
"""发送验证码"""
|
||||||
try:
|
phone = request.phone
|
||||||
phone = request.phone
|
# 通过 redis 实现验证码发送频率限制
|
||||||
# 通过 redis 实现验证码发送频率限制
|
stored_phone = redis_client.get_client().get(f"verify_code_limit:{phone}")
|
||||||
limit_time = redis_client.get_client().get(f"verify_code_limit:{phone}")
|
if phone == stored_phone:
|
||||||
if limit_time and datetime.now() < limit_time:
|
return error_response(message="验证码发送频率过高")
|
||||||
return error_response(message="验证码发送频率过高")
|
|
||||||
|
|
||||||
# 发送验证码
|
|
||||||
code, request_id = await qcloud_manager.send_sms_code(phone)
|
|
||||||
|
|
||||||
# 存储验证码到 Redis
|
# 发送验证码
|
||||||
redis_client.get_client().setex(
|
code, request_id = await qcloud_manager.send_sms_code(phone)
|
||||||
f"verify_code:{phone}",
|
print(f"验证码发送:code: {code}, request_id: {request_id}")
|
||||||
settings.VERIFICATION_CODE_EXPIRE_SECONDS,
|
|
||||||
code
|
|
||||||
)
|
|
||||||
|
|
||||||
# 设置验证码发送频率限制
|
# 存储验证码到 Redis
|
||||||
redis_client.get_client().setex(
|
redis_client.get_client().setex(
|
||||||
f"verify_code_limit:{phone}",
|
f"verify_code:{phone}",
|
||||||
datetime.now() + timedelta(seconds=30),
|
settings.VERIFICATION_CODE_EXPIRE_SECONDS,
|
||||||
True
|
code
|
||||||
)
|
)
|
||||||
|
|
||||||
return success_response(message="验证码已发送")
|
# 设置验证码发送频率限制
|
||||||
|
redis_client.get_client().setex(
|
||||||
|
f"verify_code_limit:{phone}",
|
||||||
|
settings.VERIFICATION_CODE_LIMIT_SECONDS,
|
||||||
|
phone,
|
||||||
|
)
|
||||||
|
|
||||||
except Exception as e:
|
return success_response(message="验证码已发送")
|
||||||
return error_response(message=f"发送验证码失败: {str(e)}")
|
|
||||||
|
# except Exception as e:
|
||||||
|
# logging.error(f"发送验证码失败: {str(e)}")
|
||||||
|
# return error_response(message=f"发送验证码失败: {str(e)}")
|
||||||
|
|
||||||
@router.post("/login")
|
@router.post("/login")
|
||||||
async def login(
|
async def login(
|
||||||
|
|||||||
@ -36,6 +36,7 @@ class Settings(BaseSettings):
|
|||||||
REDIS_DB: int = 0
|
REDIS_DB: int = 0
|
||||||
REDIS_PASSWORD: str = "redis_rJRMHr"
|
REDIS_PASSWORD: str = "redis_rJRMHr"
|
||||||
VERIFICATION_CODE_EXPIRE_SECONDS: int = 300 # 验证码5分钟后过期
|
VERIFICATION_CODE_EXPIRE_SECONDS: int = 300 # 验证码5分钟后过期
|
||||||
|
VERIFICATION_CODE_LIMIT_SECONDS: int = 15 # 验证码发送频率限制15秒
|
||||||
|
|
||||||
MYSQL_HOST: str = "gz-cynosdbmysql-grp-2j1cnopr.sql.tencentcdb.com"
|
MYSQL_HOST: str = "gz-cynosdbmysql-grp-2j1cnopr.sql.tencentcdb.com"
|
||||||
MYSQL_PORT: int = 27469
|
MYSQL_PORT: int = 27469
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user