24 lines
752 B
Python
24 lines
752 B
Python
import bcrypt
|
|
import random
|
|
import string
|
|
from datetime import datetime, timedelta
|
|
|
|
def hash_password(password: str) -> str:
|
|
"""加密密码"""
|
|
salt = bcrypt.gensalt()
|
|
return bcrypt.hashpw(password.encode('utf-8'), salt).decode('utf-8')
|
|
|
|
def verify_password(password: str, hashed: str) -> bool:
|
|
"""验证密码"""
|
|
return bcrypt.checkpw(password.encode('utf-8'), hashed.encode('utf-8'))
|
|
|
|
def generate_verification_code(length: int = 6) -> str:
|
|
"""生成验证码"""
|
|
return ''.join(random.choices(string.digits, k=length))
|
|
|
|
def get_client_ip(request):
|
|
"""获取客户端IP"""
|
|
if request.headers.get('X-Forwarded-For'):
|
|
return request.headers.get('X-Forwarded-For').split(',')[0]
|
|
return request.remote_addr
|