如何使用 pymongo 和 Flask-Login 的会话?
How to use sessions with pymongo and Flask-Login?
我正在使用 Flask 和 mongoDB 开发基于 Web 的应用程序。对于数据库连接和操作,我使用的是 pymongo。到目前为止,我成功地进行了用户注册和用户登录,但是当我使用 @login_required 装饰器并添加了 @login_manager.user_loader 时,我的登录已停止工作并且没有出现任何错误。在调试它时,我发现问题是会话 ID。我在
中获取会话 ID
@login_manager.user_loader
def load_user(user_id):
print("user_id",user_id)
user =User.get_by_id(user_id)
print(user)
if user is not None:
return User(user["_id"])
else:
return None
但是当我尝试使用
根据会话 ID 获取用户数据时,如何使用它或使用 pymongo 管理它
user =User.get_by_id(user_id)
我得到 None
由于您没有使用 current_user 属性,我认为这是一个很好的方法。我将在我一直在处理的应用程序之后进行解释。
首先,我在他登录时注册用户:
from flask import Blueprint
from flask_login import login_user, logout_user, login_require
login = Blueprint('Login', __name__)
@login.route('/login', methods=['GET', 'POST'])
def loginMethod():
...
db = Database()
user = db.selectIf(...)
login_user(user)
@login.route('/logout')
@login_required
def logout():
logout_user()
....
当我需要时,我使用 current_user 属性加载用户,如下所示:
from flask import Blueprint
from flask_login import login_required, current_user
page = Blueprint('page', __name__)
@page.route('/page', methods=['GET', 'POST'])
@login_required
def openPage():
...
user = current_user
我正在使用 Flask 和 mongoDB 开发基于 Web 的应用程序。对于数据库连接和操作,我使用的是 pymongo。到目前为止,我成功地进行了用户注册和用户登录,但是当我使用 @login_required 装饰器并添加了 @login_manager.user_loader 时,我的登录已停止工作并且没有出现任何错误。在调试它时,我发现问题是会话 ID。我在
中获取会话 ID@login_manager.user_loader
def load_user(user_id):
print("user_id",user_id)
user =User.get_by_id(user_id)
print(user)
if user is not None:
return User(user["_id"])
else:
return None
但是当我尝试使用
根据会话 ID 获取用户数据时,如何使用它或使用 pymongo 管理它user =User.get_by_id(user_id)
我得到 None
由于您没有使用 current_user 属性,我认为这是一个很好的方法。我将在我一直在处理的应用程序之后进行解释。
首先,我在他登录时注册用户:
from flask import Blueprint
from flask_login import login_user, logout_user, login_require
login = Blueprint('Login', __name__)
@login.route('/login', methods=['GET', 'POST'])
def loginMethod():
...
db = Database()
user = db.selectIf(...)
login_user(user)
@login.route('/logout')
@login_required
def logout():
logout_user()
....
当我需要时,我使用 current_user 属性加载用户,如下所示:
from flask import Blueprint
from flask_login import login_required, current_user
page = Blueprint('page', __name__)
@page.route('/page', methods=['GET', 'POST'])
@login_required
def openPage():
...
user = current_user