LangChainGo / redis /test_user_redis.py
远兮
生成验证码、注册、登录
dd2231b
raw
history blame
2.64 kB
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)