我正在使用烧瓶应用程序作为我的反应前端的后端服务器。在烧瓶应用程序中,我已经设置了 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 False得到的输出,当我在控制台中检查响应时,它总是 { 'list': [], 'restricted':True, 'msg': 'Login required' }
我正在尝试使用烧瓶作为后端来对前端做出反应。为了验证用户身份,我使用了 flask_login。在 package.json 中将 react 的代理值设置为“localhost:5000”的情况下,一切正常。但是为了生产,我避免使用代理并在 fetch 调用中使用整个 url,比如fetch('http://localhost:5000/auth/login', userObj)
. 当我这样做时,flask 无法记住用户或保持用户登录以进行下一次 api 调用。我试图打印 current_user.is_authenticated 并在下一次 fetch 调用时输出 False。我该如何处理?