从React调用时Flask会话不起作用

问题描述

我目前正在使用石墨烯作为Flask API:

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))

我已经建立了一个石墨烯突变体,用于处理登录验证并将用户的ID存储在flask会话中。

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)

然后我尝试使用URQL从React发出请求:

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上运行查询时,它确实起作用。

解决方法

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...