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

Python中使用flask_login.current_user.name()获取用户姓名的方法

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

在使用Flask Login库的情况下,可以通过flask_login.current_user来获取当前登录用户的信息,包括用户名。在用户登录成功后,可以通过设置用户模型的属性或方法来获取用户名,然后在其他视图函数中使用flask_login.current_user.name来访问用户姓名。

以下是一个使用Flask和Flask Login库的简单示例:

1. 安装Flask和Flask Login库

pip install flask flask-login

2. 创建Flask应用

from flask import Flask
from flask_login import LoginManager

app = Flask(__name__)
app.secret_key = "secret_key"  # 设置应用的密钥,用于签名和保护用户会话
login_manager = LoginManager(app)  # 初始化Flask Login扩展

# 设置登录页面的视图函数
@login_manager.user_loader
def load_user(user_id):
    # 在这里可以根据用户ID从数据库或其他数据源加载用户模型并返回
    return User.get(user_id)  # 这里假设User是一个数据库模型类,其中get方法用于根据用户ID获取用户模型

3. 定义用户模型

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

    def get_id(self):
        return str(self.id)

4. 编写登录视图函数

from flask_login import login_user, current_user

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # 假设从请求中获取用户名和密码
        username = request.form['username']
        password = request.form['password']
        
        # 假设在数据库中验证用户名和密码是否匹配
        if username == 'admin' and password == 'password':
            # 创建一个用户模型实例
            user = User('user_id', 'John Doe')
            
            # 使用Flask Login的login_user函数登录用户
            login_user(user)
            
            # 重定向到受保护的页面,例如用户个人主页
            return redirect('/profile')
    
    # 登录页面HTML代码
    return '''
    <form method="post" action="/login">
        <input type="text" name="username" placeholder="Username" required>
        <br>
        <input type="password" name="password" placeholder="Password" required>
        <br>
        <input type="submit" value="Log in">
    </form>
    '''

@app.route('/profile')
@login_required  # 使用@login_required装饰器来保护受登录保护的页面
def profile():
    # 可以通过flask_login.current_user.name访问当前登录用户的姓名
    return f'Hello, {current_user.name}!'

以上示例展示了如何使用Flask和Flask Login库来实现用户登录和保护某些页面。在登录视图函数中,创建用户模型实例并调用login_user()函数将用户登录。在受保护的视图函数中,使用flask_login.current_user.name来获取当前登录用户的姓名。

注意:以上示例仅包含基本的登录和保护页面的示例代码,并未包含真正的数据库或验证逻辑。在实际应用中,需要根据具体情况进行适当的修改和补充。