为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 pymongo 和 Flask-Login 的会话?

如何使用 pymongo 和 Flask-Login 的会话?

鸿蒙传说 2023-06-13 16:48:07
我正在使用 Flask 和 MongoDB 开发基于 Web 的应用程序。对于数据库连接和操作,我使用的是 pymongo。到目前为止,我成功地进行了用户注册和用户登录,但是当我使用@login_required 装饰器并添加@login_manager.user_loader 时,我的登录已停止工作并且没有出现任何错误。在调试它时,我发现问题是会话 ID。我正在获取会话 ID@login_manager.user_loaderdef 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但是如何使用它或使用 pymongo 管理它,就像我尝试使用 session id 获取用户数据一样user =User.get_by_id(user_id)我没有得到
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

由于您没有使用 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


查看完整回答
反对 回复 2023-06-13
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信