我在我的用户模型中添加了一个user_id,我最初使用的是电子邮件作为我的PK,但我想在开箱即用的烧瓶管理中使用它。我添加了一个user_id字段并迁移了我的数据库。现在每当我从页面点击登录提交时都会刷新。
这是我的用户模型:
class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String)
password = db.Column(db.String)
authenticated = db.Column(db.Boolean, default=False)
def is_active(self):
"""True, as all users are active."""
return True
def get_id(self):
"""Return the email address to satisfy Flask-Login's requirements."""
return self.user_id
def is_authenticated(self):
"""Return True if the user is authenticated."""
return self.authenticated
def is_anonymous(self):
"""False, as anonymous users aren't supported."""
return False
这是我的登录视图:
@app.route("/login", methods=["GET", "POST"])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.get(form.email.data)
if user:
if bcrypt.check_password_hash(user.password, form.password.data):
user.authenticated = True
db.session.add(user)
db.session.commit()
login_user(user, remember=True)
return redirect(url_for("home"))
return render_template("login.html", form=form)
登录模板:
{% extends "base.html" %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-sm-2">
<form method="POST" action="/login">
{{ form.csrf_token }}
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
{{ form.email(size=20, class="form-control col-sm-4") }}
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
{{ form.password(size=20, class="form-control col-sm-4" ) }}
</div>
<br />
<br />
<button type="submit" class="btn btn-default" value="Login">Submit</button>
</form>
</div>
</div>
</div>
{% endblock %}
用户加载程序:
@login_manager.user_loader
def user_loader(user_id):
return User.query.get(user_id)
我做错了什么?