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

使用flask_login.current_user.name()获取当前用户姓名的实用方法

发布时间:2024-01-03 20:19:35

Flask-Login是Flask框架的一个扩展,用于处理用户认证和用户会话管理。它提供了一些实用的方法来获取当前已登录用户的信息。其中,current_user是一个代表当前用户的全局对象,可以使用current_user.name来获取当前用户的姓名。

下面是一些使用current_user.name获取当前用户姓名的实用方法和使用例子。

1. 配置Flask-Login

首先,需要在Flask应用中配置Flask-Login的一些基本设置。在配置中,我们需要指定用户认证的回调函数,并设置一个登录页面。

from flask import Flask
from flask_login import LoginManager

app = Flask(__name__)
app.secret_key = 'your_secret_key'

login_manager = LoginManager()
login_manager.init_app(app)

@login_manager.user_loader
def load_user(user_id):
    # 返回用户对象
    return User.query.get(int(user_id))

@login_manager.unauthorized_handler
def unauthorized():
    # 处理未授权的用户
    return "You are not authorized to access this page."

2. 创建User模型

需要创建一个User模型类来表示应用中的用户。这个模型类必须实现一些特定的方法,以供Flask-Login使用。

from flask_login import UserMixin

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    # 其他用户属性
    
    def get_id(self):
        return str(self.id)

3. 登录视图函数

实现一个登录视图函数来验证用户的登录,并将用户对象保存到current_user中。

from flask import render_template, redirect, url_for, request
from flask_login import login_user

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        
        user = User.query.filter_by(username=username).first()
        
        if user and user.check_password(password):
            login_user(user) # 将用户对象保存到current_user中
            return redirect(url_for('index'))
        else:
            return "Invalid username or password."

    return render_template('login.html')

4. 访问需要登录权限的页面

现在,我们可以在需要登录权限的页面中使用current_user.name来获取当前登录用户的姓名。

from flask import render_template
from flask_login import login_required, current_user

@app.route('/profile')
@login_required
def profile():
    return render_template('profile.html', name=current_user.name)

在上面的例子中,当用户访问/profile页面时,如果用户已经登录,就会渲染profile.html模板,并将当前用户的姓名传递给模板。

<!DOCTYPE html>
<html>
<head>
    <title>Profile</title>
</head>
<body>
    <h1>Welcome, {{ name }}</h1>
</body>
</html>

这样,用户在访问/profile页面时会看到一个欢迎页面,显示当前用户的姓名。

总结:

使用flask_login.current_user.name可以方便地获取当前登录用户的姓名,只需在视图函数中使用current_user.name来访问。

首先,需要配置Flask-Login的一些基本设置,然后创建一个User模型类来表示用户,实现登录视图函数来验证用户登录并将用户对象保存到current_user中,最后,在需要登录权限的页面中使用current_user.name获取当前登录用户的姓名。