如何在pymongo和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或使用pymongo进行管理

user =User.get_by_id(user_id)

我什么也没得到

解决方法

由于您没有使用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','POST'])
@login_required
def openPage():
    ... 
    user = current_user