问题描述
我正在使用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 (将#修改为@)