Flask-Login扩展的使用-实现用户登录

2023-05-06 16:15:23 浏览数 (16)

实现用户登录

一旦我们实现了用户认证回调函数,我们就可以开始实现用户登录了。在我们的应用程序中,我们将使用Flask的视图函数来处理用户登录请求。在login.py模块中,我们可以定义一个名为login()的视图函数:

代码语言:javascript复制
from flask import render_template, request, redirect, url_for, flash
from flask_login import login_user, logout_user
from models import User

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # 获取表单提交的用户名和密码
        username = request.form['username']
        password = request.form['password']
        # 查询用户信息
        user = User.query.filter_by(username=username).first()
        # 验证密码
        if user and user.check_password(password):
            # 用户名密码验证成功,登录用户
            login_user(user)
            flash('Logged in successfully.')
            return redirect(request.args.get('next') or url_for('index'))
        # 验证失败
        flash('Invalid username or password.')
    # 渲染登录表单页面
    return render_template('login.html')

在这个例子中,我们定义了一个名为login()的视图函数。当用户提交登录表单时,该函数将获取表单提交的用户名和密码,并使用SQLAlchemy ORM库查询数据库,获取User对象。

如果用户名和密码验证成功,我们将调用Flask-Login的login_user()函数来将用户ID存储在用户会话中,表示用户已登录。如果验证失败,则使用Flask的flash()函数向用户显示错误消息,并重新渲染登录表单页面。

0 人点赞