利用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的配置是最基本的用法,您可以根据自己的需求进行定制和扩展。
