微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从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 举报,一经查实,本站将立刻删除。