Python中login_user()函数的基本用法和示例
发布时间:2023-12-14 00:55:27
login_user()函数是Flask-Login库中的一个函数,用于在用户登录后将用户标记为已登录状态。它的基本用法如下:
from flask_login import login_user
@login_manager.user_loader
def load_user(user_id):
# 根据用户ID加载用户对象
def login():
user = load_user(user_id)
if user and user.check_password(password):
login_user(user)
# 用户登录后的逻辑
在上面的代码中,login_user()函数接受一个用户对象作为参数,并且将该用户标记为已登录状态。接下来,这个已登录的用户可以使用Flask-Login提供的其他功能,比如在页面中通过current_user变量获取当前登录的用户对象。
下面是一个更详细的示例,演示了如何使用login_user()函数实现用户登录的功能:
from flask import Flask, render_template, request, redirect
from flask_login import LoginManager, UserMixin, login_user, current_user
app = Flask(__name__)
app.secret_key = 'supersecretkey'
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin):
def __init__(self, user_id, username, password):
self.id = user_id
self.username = username
self.password = password
def check_password(self, password):
return self.password == password
@login_manager.user_loader
def load_user(user_id):
user_data = {'1': {'username': 'admin', 'password': 'adminpass'}}
if user_id in user_data:
user_info = user_data[user_id]
return User(user_id, user_info['username'], user_info['password'])
return None
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
user_id = request.form['user_id']
password = request.form['password']
user = load_user(user_id)
if user and user.check_password(password):
login_user(user)
return redirect('/dashboard')
return render_template('login.html')
@app.route('/dashboard')
def dashboard():
if current_user.is_authenticated:
return f"Welcome {current_user.username}!"
return redirect('/')
if __name__ == '__main__':
app.run()
上面的代码实现了一个简单的登录功能。用户在登录页面输入正确的用户名和密码后,点击登录按钮时,会将用户对象传递给login_user()函数来标记用户为已登录状态。接下来,用户将被重定向到仪表板页面,其中欢迎消息包含当前登录用户的用户名。
这就是login_user()函数的基本用法和示例。通过调用login_user()函数,你可以简单地将用户标记为已登录状态,并且可以在其他视图函数中使用current_user对象来访问当前登录的用户的信息。
