好友
阅读权限10
听众
最后登录1970-1-1
|
关山月明
发表于 2021-2-23 11:43
各位大佬们,小弟不才,想要请教大家一个问题。
就是在flask项目中,我写了一个发送邮箱验证码的问题,之前本来准备使用封装好的flask-mail发送,在我的项目中出现循环导包的问题,我也懒得解决这个。一气之下就使用的自带stmplib模块,邮件是可以发送成功的。
但是,我几天测试的时候发现一个问题,就是我通过chrome浏览器注册用户发送邮箱验证码之后(使用Ajax获取邮箱传到后台),我在我手机上打开这个网页,用这个验证码也能注册成功。
这是处理验证码的视图函数,请大家帮忙看看问题。
我首先定义了验证码全局变量
# 验证码变量
verifycode = None
# 发送邮件
@user_bp.route('/send_email', methods=['POST'])
def send_email():
email = request.form.get('email')
smtp_obj = smtplib.SMTP_SSL('smtp.qq.com'.encode(), 465)
smtp_obj.login('**********@qq.com', "qq邮箱授权码")
global verifycode
verifycode = str(uuid.uuid4()).split('-')[0]
# 邮件正文
msg = MIMEText('<h2>心念念的验证码已经来到你的身边啦^_^</h2><hr><h4 style="color:red"><b>{}<b></h4>'.format(verifycode), 'HTML', 'utf8')
msg['From'] = Header('naimei', 'utf8')
msg['To'] = Header('flask project', 'utf8')
msg['Subject'] = Header('验证码')
smtp_obj.sendmail('*********@qq.com', [email], msg.as_string())
smtp_obj.quit()
return 'success'
然后在注册的视图函数中接收这个验证码。
# 注册页面
@user_bp.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
repassword = request.form.get('repassword')
email = request.form.get('email')
code = request.form.get('verifycode')
global verifycode
if password == repassword and verifycode == code and len(username):
user = User()
user.username = username
user.password = generate_password_hash(password)
user.email = email
# 添加数据
db.session.add(user)
# 提交数据
db.session.commit()
session['uid'] = user.id
return redirect(url_for('user.index'))
return render_template('/user/register.html', msg='出现空内容!')
elif request.method == 'GET':
return render_template('/user/register.html')
这种思路是我自己寻思出来的,但是今天测试的时候发现了 这个bug,冥思苦想不知道怎么解决,请大佬们赐教。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|