Spaces:
Runtime error
Runtime error
import json | |
import random | |
import string | |
from flask import Flask, request, jsonify | |
from redis import Redis | |
app = Flask(__name__) | |
redis = Redis(host='10.254.13.87', port=6379) | |
# 生成验证码 | |
def generate_verification_code(): | |
# code = ''.join(random.choices(string.ascii_uppercase + string.digits, k=6)) | |
code = ''.join(random.choices(string.digits, k=6)) | |
return code | |
# 发送验证码到用户邮箱(这里只是模拟发送过程) | |
def send_verification_code(email, code): | |
print(f'Sending verification code {code} to {email}...') | |
# 用户请求发送验证码 | |
def send_verification_code_endpoint(): | |
# 从请求中获取邮箱地址 | |
email = request.json.get('email') | |
# 生成验证码 | |
verification_code = generate_verification_code() | |
# 发送验证码到用户邮箱 | |
send_verification_code(email, verification_code) | |
# 保存验证码到Redis,并设置过期时间(例如,5分钟) | |
redis.setex(email, 300, verification_code) | |
return jsonify({'message': 'Verification code sent'}) | |
# 用户注册 | |
def register(): | |
# 从请求中获取注册信息 | |
email = request.json.get('email') | |
username = request.json.get('username') | |
password = request.json.get('password') | |
verification_code = request.json.get('verification_code') | |
# 检查验证码是否匹配 | |
stored_code = redis.get(email) | |
if stored_code is None or verification_code != stored_code.decode('utf-8'): | |
return jsonify({'message': 'Invalid verification code'}), 400 | |
# 检查用户名是否已被注册 | |
if redis.hexists('users', username): | |
return jsonify({'message': 'Username already exists'}), 400 | |
# 保存用户信息到Redis | |
user_data = { | |
'email': email, | |
'password': password | |
} | |
redis.hset('users', username, json.dumps(user_data)) | |
return jsonify({'message': 'Registration successful'}) | |
# 用户登录 | |
def login(): | |
# 从请求中获取登录信息 | |
username = request.json.get('username') | |
password = request.json.get('password') | |
# 检查用户名和密码是否匹配 | |
user_data = redis.hget('users', username) | |
if not user_data: | |
return jsonify({'message': 'Invalid username'}), 400 | |
user_data = user_data.decode('utf-8') | |
if password != eval(user_data)['password']: | |
return jsonify({'message': 'Invalid password'}), 400 | |
return jsonify({'message': 'Login successful'}) | |
if __name__ == '__main__': | |
app.run(debug=True) | |