Сессии Flask не работают при вызове из React
В настоящее время я использую графен в качестве API для Flask:
from flask import Flask
from flask_graphql import GraphQLView
from .database.base import db_session
from .schema import schema
from flask_cors import CORS
from flask_session import Session
app = Flask(__name__)
app.config.from_object('config.Config')
CORS(app, supports_credentials=True)
Session(app)
app.add_url_rule('/graphql',
view_func=GraphQLView.as_view('graphql',
schema=schema,
graphiql=True))
Я настроил мутацию графена, которая связана с проверкой входа в систему и сохраняет идентификатор пользователя в сеансе фляги.
from flask import session
class LoginWorker(graphene.Mutation):
"""Mutation to get a Worker logged in"""
worker = graphene.Field(lambda: Worker)
error = graphene.Field(lambda: Error)
class Arguments:
worker_login_data = LoginWorkerInput()
def mutate(self, info, worker_login_data):
# Login Verification Here
session['userId'] = worker.id
return LoginWorker(worker=worker)
Затем я пытаюсь сделать запрос из React, используя URQL:
const router = useRouter();
const [, registerWorker] = useLoginWorkerMutation();
return (
<>
<Wrapper variant="small">
<Formik
initialValues={{ username: "", password: "", workerId: "" }}
onSubmit={async (values, { setErrors }) => {
const response = await registerWorker(values);
if (response.data.loginWorker.error) {
const field: string = response.data.loginWorker.error.field;
const message: string = response.data.loginWorker.error.message;
const errorMap: Record<string, string> = {};
errorMap[field] = message;
setErrors(errorMap);
} else if (response.data.loginWorker.worker) {
router.push("/");
}
}}
>
/* Form Stuff Here */
</Formik>
);
Я также установил параметры выборки для использования учетных данных: "включить"
const client = createClient({
url: "http://127.0.0.1:5000/graphql",
fetchOptions: {
credentials: "include",
},
});
Однако сеансы по-прежнему не отображаются в разделе файлов cookie браузера. Однако он работает, когда я запускаю запрос наlocalhost:my_flask_app_port/graphql
.