欢迎访问宙启技术站
智能推送

Python中login_user()函数的基本用法和示例

发布时间:2023-12-14 00:55:27

login_user()函数是Flask-Login库中的一个函数,用于在用户登录后将用户标记为已登录状态。它的基本用法如下:

from flask_login import login_user

@login_manager.user_loader
def load_user(user_id):
    # 根据用户ID加载用户对象

def login():
    user = load_user(user_id)
    if user and user.check_password(password):
        login_user(user)
        # 用户登录后的逻辑

在上面的代码中,login_user()函数接受一个用户对象作为参数,并且将该用户标记为已登录状态。接下来,这个已登录的用户可以使用Flask-Login提供的其他功能,比如在页面中通过current_user变量获取当前登录的用户对象。

下面是一个更详细的示例,演示了如何使用login_user()函数实现用户登录的功能:

from flask import Flask, render_template, request, redirect
from flask_login import LoginManager, UserMixin, login_user, current_user

app = Flask(__name__)
app.secret_key = 'supersecretkey'

login_manager = LoginManager()
login_manager.init_app(app)

class User(UserMixin):
    def __init__(self, user_id, username, password):
        self.id = user_id
        self.username = username
        self.password = password

    def check_password(self, password):
        return self.password == password

@login_manager.user_loader
def load_user(user_id):
    user_data = {'1': {'username': 'admin', 'password': 'adminpass'}}
    if user_id in user_data:
        user_info = user_data[user_id]
        return User(user_id, user_info['username'], user_info['password'])
    return None

@app.route('/', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        user_id = request.form['user_id']
        password = request.form['password']
        user = load_user(user_id)
        if user and user.check_password(password):
            login_user(user)
            return redirect('/dashboard')
    return render_template('login.html')

@app.route('/dashboard')
def dashboard():
    if current_user.is_authenticated:
        return f"Welcome {current_user.username}!"
    return redirect('/')

if __name__ == '__main__':
    app.run()

上面的代码实现了一个简单的登录功能。用户在登录页面输入正确的用户名和密码后,点击登录按钮时,会将用户对象传递给login_user()函数来标记用户为已登录状态。接下来,用户将被重定向到仪表板页面,其中欢迎消息包含当前登录用户的用户名。

这就是login_user()函数的基本用法和示例。通过调用login_user()函数,你可以简单地将用户标记为已登录状态,并且可以在其他视图函数中使用current_user对象来访问当前登录的用户的信息。