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

利用flask_login.current_user.name()函数返回当前用户的姓名

发布时间:2024-01-03 20:25:55

Flask-Login是一个Flask扩展,用于处理用户验证、登录和登出的功能。current_user是Flask-Login提供的一个方法,用于获取当前已登录用户的对象。假设我们的用户对象有一个name属性,可以通过current_user.name来获取当前用户的姓名。

首先,我们需要在Flask应用程序中初始化并配置Flask-Login。以下是一个简单的示例:

from flask import Flask
from flask_login import LoginManager, UserMixin, current_user

app = Flask(__name__)

# 配置Flask-Login
app.config['SECRET_KEY'] = 'your-secret-key'
login_manager = LoginManager(app)
login_manager.login_view = 'login'

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

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

# 用户加载回调函数
@login_manager.user_loader
def load_user(user_id):
    return users.get(user_id)

# 登录路由
@app.route('/login')
def login():
    # 假设用户登录成功后将用户id保存在session中
    user_id = '1'
    user = users.get(user_id)
    login_user(user)
    return 'Logged in successfully!'

# 保护的路由
@app.route('/protected')
def protected():
    if current_user.is_authenticated:
        return f'Hello, {current_user.name}!'
    else:
        return 'Not logged in!'

# 登出路由
@app.route('/logout')
def logout():
    logout_user()
    return 'Logged out successfully!'

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

在上述示例中,我们首先配置了Flask-Login并设置了用于登录的视图函数为login。接着定义了一个User类来模拟用户对象,其中包含id和name属性。我们创建了两个用户对象John和Jane,并使用它们的id作为键将这些用户对象保存在users字典中。

然后,我们定义了一个用户加载回调函数load_user,用于根据用户id从users字典中获取用户对象。

login路由中,我们模拟用户登录成功并将用户对象保存在session中,然后调用login_user函数来实现登录。

protected路由中,我们检查current_user.is_authenticated属性来确定当前用户是否已登录。如果已登录,我们可以通过current_user.name获取当前用户的姓名,并返回一个包含用户姓名的欢迎消息。如果未登录,则返回一个未登录的提示。

最后,在logout路由中,我们调用logout_user函数以登出当前用户。

请注意,上述示例中的Flask-Login的配置是最基本的用法,您可以根据自己的需求进行定制和扩展。