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

教程:如何在Python中使用flask_login.current_user.name()获取用户姓名

发布时间:2024-01-03 20:24:16

在Python中使用Flask和Flask-Login,我们可以通过flask_login.current_user获取当前登录用户的信息,包括用户姓名。

Flask-Login是一个Flask扩展,用于管理用户身份验证和会话管理。它提供了一个current_user对象,可以访问当前已登录用户的属性,如用户名、角色等。

首先,我们需要安装Flask和Flask-Login。可以使用以下命令安装它们:

pip install flask
pip install flask-login

接下来,我们需要在Flask应用程序中设置一个用户模型,并启用用户认证和会话管理。下面是一个示例代码:

from flask import Flask
from flask_login import LoginManager, UserMixin

app = Flask(__name__)
app.secret_key = 'your_secret_key'    # 设置Flask应用程序的密钥

# 用户模型
class User(UserMixin):
    def __init__(self, id, name):
        self.id = id
        self.name = name

# 用户库
users = {
    '1': User('1', 'John'),
    '2': User('2', 'Jane')
}

# 初始化Flask-Login
login_manager = LoginManager()
login_manager.init_app(app)

# 处理用户认证
@login_manager.user_loader
def load_user(user_id):
    return users.get(user_id)

# 设置登录页面
@login_manager.unauthorized_handler
def unauthorized():
    return '请先登录'

# 设置路由
@app.route('/')
def index():
    return '欢迎访问首页'

@app.route('/profile')
@login_required    # 登录验证装饰器
def profile():
    user = current_user    # 获取当前登录用户
    return f'欢迎 {user.name} 访问个人资料'

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

在上面的代码中,我们首先创建了一个User类,用于表示用户对象。User类继承自UserMixin,这是Flask-Login提供的一个基础类,它包含了一些常用的用户认证和会话管理方法。

接下来,我们创建了一个users字典,用于存储用户对象。每个用户都有一个唯一的ID和姓名。

然后,我们初始化了LoginManager对象,并通过调用init_app方法将其与Flask应用程序关联起来。LoginManager负责处理用户认证和会话管理。

接着,我们定义了两个处理器函数:load_userunauthorizedload_user函数用于加载用户对象,根据用户ID从users字典中获取对应的用户对象。unauthorized函数用于处理未经授权的请求。

在路由函数上,我们使用了@login_required装饰器,它可以确保只有经过身份验证的用户才能访问该路由。我们可以通过current_user来获取当前登录用户,然后使用user.name来获取用户姓名。

最后,我们通过调用app.run()来运行Flask应用程序。

现在,我们可以启动Flask应用程序,并在浏览器中访问http://localhost:5000/profile,如果没有登录,将会显示"请先登录",如果已经登录,将会显示"欢迎 [用户姓名] 访问个人资料"。

希望这个教程对你有帮助!