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

简单易懂的使用flask_login.current_user.name()获取当前登录用户的姓名

发布时间:2024-01-03 20:18:04

Flask-Login是一个用于处理用户认证和管理用户会话的Flask扩展。它提供了一个current_user对象来代表当前登录的用户。

要使用current_user对象获取当前登录用户的姓名,需要完成以下步骤:

第一步:安装Flask-Login

在命令行中执行以下命令来安装Flask-Login:

pip install flask-login

第二步:创建Flask应用

在Python脚本中导入Flask、Flask-Login扩展和其他必要的模块。

from flask import Flask, render_template, redirect, url_for
from flask_login import LoginManager, login_user, logout_user, login_required, current_user

创建Flask应用和初始化LoginManager。

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'  # 设置一个密钥来保护session
login_manager = LoginManager()
login_manager.init_app(app)

第三步:模拟用户

创建一个简单的User类来模拟用户对象,其中包含一个name属性用于表示用户的姓名。

class User:
    def __init__(self, name):
        self.name = name

    def get_id(self):
        return self.name

第四步:实现用户认证和管理

创建一个用于模拟用户认证和管理的视图函数。

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        name = request.form['name']
        user = User(name)
        login_user(user)  # 登录用户
        return redirect(url_for('index'))
    return render_template('login.html')

@app.route('/logout')
@login_required
def logout():
    logout_user()  # 登出用户
    return redirect(url_for('login'))

第五步:使用current_user获取当前登录用户的姓名

在需要获取当前登录用户的姓名的地方,使用current_user对象的name属性来获取。

@app.route('/')
@login_required
def index():
    user_name = current_user.name
    return f'Hello, {user_name}!'

完整的例子代码如下:

from flask import Flask, render_template, redirect, url_for, request
from flask_login import LoginManager, login_user, logout_user, login_required, current_user

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
login_manager = LoginManager()
login_manager.init_app(app)

class User:
    def __init__(self, name):
        self.name = name

    def get_id(self):
        return self.name

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

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        name = request.form['name']
        user = User(name)
        login_user(user)  # 登录用户
        return redirect(url_for('index'))
    return render_template('login.html')

@app.route('/logout')
@login_required
def logout():
    logout_user()  # 登出用户
    return redirect(url_for('login'))

@app.route('/')
@login_required
def index():
    user_name = current_user.name
    return f'Hello, {user_name}!'

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

在上述例子中,用户在访问首页时会检查是否已经登录,如果未登录,会重定向到登录页面。如果已经登录,则可以通过current_user对象的name属性获取当前登录用户的姓名,然后将其显示在页面中。

请注意,上述代码是一个简单的示例,仅用于演示如何使用Flask-Login获取当前登录用户的姓名。在实际应用中,您可能需要更复杂的用户认证逻辑和用户管理方式。