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