Spaces:
Runtime error
Runtime error
File size: 2,639 Bytes
dd2231b d674f7c dd2231b d674f7c dd2231b d674f7c dd2231b d674f7c dd2231b d674f7c dd2231b d674f7c dd2231b d674f7c dd2231b d674f7c dd2231b d674f7c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
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}...')
# 用户请求发送验证码
@app.route('/send_verification_code', methods=['POST'])
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'})
# 用户注册
@app.route('/register', methods=['POST'])
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'})
# 用户登录
@app.route('/login', methods=['POST'])
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)
|