如何使用 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