Flask实现的功能:
- 用户注册增加邮箱验证激活功能
- 增加用户管理功能(登录和登出)
目录结构:
用户注册增加邮箱验证激活功能
1.user模型更新:
# 生成账户激活的token
def generate_activate_token(self, expires_in=3600):
s = Serializer(current_app.config['SECRET_KEY'], expires_in=expires_in)
return s.dumps({
'id': self.id})
# 账户激活(静态方法)
@staticmethod
def check_activate_token(token):
s = Serializer(current_app.config['SECRET_KEY'])
try:
data = s.loads(token)
except:
return False
u = User.query.get(data['id'])
if not u:
# 用户已被删除
return False
# 没有激活时才需要激活
if not u.confirmed:
u.confirmed = True
db.session.add(u)
return True
2.views更新:
from app.email import send_mail
@user.route('/register/', methods=['GET', 'POST'])
def register():
...
# 下面生成token需要用户id,此时还没有id,需要手动提交
db.session.commit()
# 生成用于激活校验的token
token = u.generate_activate_token()
# 发送激活邮件到注册邮箱
send_mail(u.email, '账户激活', 'activate', username=u.username, token=token)
# 提示用户下一步操作
flash('注册成功,请移步至邮箱点击激活')
# 跳转到指定位置
return redirect(url_for('main.index'))
return render_template('user/register.html', form=form)
# 账户激活
@user.route('/activate/<token>')
def activate(token):
if User.check_activate_token(token):
flash('激活成功')