All checks were successful
Build and Deploy LTY / build-and-deploy (push) Successful in 11m52s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
from aliyunsdkcore.client import AcsClient
|
|
from aliyunsdkcore.request import CommonRequest
|
|
from django.conf import settings
|
|
import uuid
|
|
from django.core.cache import cache
|
|
|
|
|
|
def send_sms(phone_number, code):
|
|
"""发送验证码"""
|
|
client = AcsClient(
|
|
settings.ALIYUN_SMS_ACCESS_KEY_ID,
|
|
settings.ALIYUN_SMS_ACCESS_KEY_SECRET,
|
|
'cn-hangzhou'
|
|
)
|
|
|
|
request = CommonRequest()
|
|
request.set_accept_format('json')
|
|
request.set_domain('dysmsapi.aliyuncs.com')
|
|
request.set_method('POST')
|
|
request.set_protocol_type('https')
|
|
request.set_version('2017-05-25')
|
|
request.set_action_name('SendSms')
|
|
|
|
request.add_query_param('PhoneNumbers', phone_number)
|
|
request.add_query_param('SignName', settings.ALIYUN_SMS_SIGN_NAME)
|
|
request.add_query_param('TemplateCode', settings.ALIYUN_SMS_TEMPLATE_CODE)
|
|
request.add_query_param('TemplateParam', '{"code":"%s"}' % code)
|
|
|
|
response = client.do_action_with_exception(request)
|
|
return response
|
|
|
|
|
|
def generate_token(user_id, is_admin=False):
|
|
token = str(uuid.uuid4())
|
|
prefix = "admin_token:" if is_admin else "token:"
|
|
cache.set(f"{prefix}{token}", user_id, timeout=2592000) # Token 有效期为30天
|
|
return token
|
|
|
|
def get_user_id_from_token(token):
|
|
# 优先尝试从管理员token中获取
|
|
user_id = cache.get(f"admin_token:{token}")
|
|
if user_id is not None:
|
|
return user_id
|
|
# 再尝试从普通用户token中获取
|
|
return cache.get(f"token:{token}")
|
|
|
|
|