3 回答
TA贡献1876条经验 获得超5个赞
经过一段时间的调试器,我终于解决了这个问题。
关键问题是我试图_id将MongoDB集合中的参数用作用户ID。我没有意识到_id参数是一种ObjectID类型,而不是我需要的字符串或unicode。
def find_by_username(username):
try:
data = app.mongo.db.users.find_one_or_404({'username': username})
user = User(unicode(data['_id']), data['username'], data['password'])
return user
except HTTPException:
return None
def find_by_id(userid):
try:
data = app.mongo.db.users.find_one_or_404({'_id': ObjectId(userid)})
user = User(unicode(data['_id']), data['username'], data['password'])
return user
修改两个函数适当地修复了此错误。
TA贡献1829条经验 获得超7个赞
如果您已验证它不是您的login_user
功能,那么就离开您的find_by_id
功能。
的源代码为user_loader
:
您设置的函数应带有用户ID(a
unicode
)并返回用户对象,或者None
如果用户不存在。
您的find_by_id
功能使用find_one_or_404
会引起注意。我将对该函数添加一些额外的调试,添加一些打印信息或进行日志记录,以显示使用正确的unicode id调用了该函数,并且该函数返回了一个User
对象或None
。
希望这可以使您更进一步地缩小问题的范围。
添加回答
举报