如何防止flask_login中的current_user重置?

问题描述

我正在使用flask应用程序作为我的React前端的后端服务器。在烧瓶应用程序中,我已经设置了LoginManager(app),并且有一个@login_manager.user_loader,所有设置都根据烧瓶文档确定。通过打印语句,我可以确保current_user.is_authenticated语句之后login_user(user,remember=True)是正确的。

但是,当我在另一条路线上检查current_user.is_authenticated时,它是错误的。我该如何解决?与CORS(app)有关系吗?如果是这样,如何为CORS设置flask_login?

#__init__.py
...
app = Flask(__name__)
CORS(app)
login_manager = LoginManager(app)

登录发生如下:

# users.py

@app.route('/auth/login',methods=['GET','POST'])
def login():
  username = request.json.get('username')
  password = request.json.get('password')
  userObj = {}

  if verify_password(username,password):
    user =User.query.filter_by(username=username).first()
    login_user(user,remember=True)
    userObj ={"uid":user.id,"username": user.username,"email": user.email}        

  return jsonify({"loggedin":current_user.is_authenticated,"user":userObj})

然后我尝试先验证current_user是否已通过身份验证,然后再发送回章节列表。

# lists.py
from flask_login import current_user as curUser

@app.route('/get_chaptersList',methods=['GET'])
def chaptersList():
  # Access Checks
  print("curUser:",curUser.get_id(),curUser.is_authenticated)
  if not curUser.is_authenticated:
    return jsonify({ 'list': [],'restricted':True,'msg': 'Login required' })

我从上述功能 curUser:None 中获得的输出,当我在控制台中检查响应时,它始终是{'list':[],'restricted':True,' msg':“需要登录”}

我正在尝试使用flask作为后端来响应前端。为了验证用户身份,我使用flask_login。在package.json中将react的proxy值设置为“ localhost:5000”时,一切在开发中都可以正常工作。但是出于生产的考虑,我避免使用代理,而是在提取调用中使用整个URL,例如fetch('http://localhost:5000/auth/login',userObj)。当我这样做时,flask无法记住用户或保持用户登录以进行下一个api调用。我尝试打印current_user.is_authenticated,它在下一个提取调用输出False。我该如何处理?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...