问题描述
我正在使用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