@app.route('/login',methods=['GET', 'POST'])
def 登录():
if current_user.is_authenticated:
return redirect(url_for('homepage'))
form = LoginForm()
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username).first()
if user and check_password_hash(user.password_hash, password):
flash('Login successful!')
return redirect(url_for('homepage'))
else:
flash('Invalid username or password.', 'error')
return redirect(url_for('login'))
return render_template('/users/login.html', title='Login', form=form)
def is_authenticated():
return current_user.is_authenticated
我尝试在登录路由中添加身份验证,但仍然登录未注册。
看来您只是查询了用户,并没有执行任何操作来使用户登录。例如,要使用户登录,您可以使用
login_user
包中的 flask_login
方法。
from flask_login import login_user
if user and check_password_hash(user.password_hash, password):
login_user(user)
flash('Login successful!')
return redirect(url_for('homepage'))
之后,要检查是否有任何用户登录,您可以使用同一包中的
current_user
方法。
最终,您可以使用这样的视图:
from flask_login import current_user, login_user
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('homepage'))
form = LoginForm()
if form.validate_on_submit():
username = form.username.data
password = form.password.data
user = User.query.filter_by(username=username).first()
if user and check_password_hash(user.password_hash, password):
login_user(user)
flash('Login successful!')
return redirect(url_for('homepage'))
else:
flash('Invalid username or password.', 'error')
return render_template('/users/login.html', title='Login', form=form)