django-graphql-jwt JWT_COOKIE_SAMESITE 不工作
django-graphql-jwt JWT_COOKIE_SAMESITE not working
我正在使用 Django GraphQL JWT Library and Django GraphQL Auth
我一直收到这个错误
google chrome error
在 http://localhost:3000/ 和 https://localhost:3000/ 上使用此反应代码(针对相关性进行了修剪)
const [login] = useMutation(LOGIN_MUTATION, {
variables: {
email: email,
password: password
},
onCompleted: ({ tokenAuth }) => {
if (tokenAuth.success) {
setToken(tokenAuth.token);
}
}
});
现在,当我 运行 来自 graphiql 页面的这个突变起作用时,我最终得到了一个 JWT cookie,但不在反应站点上
mutation {
tokenAuth(
email:"********"
password:"*********"
){
token
refreshToken
success
errors
}
}
这行不通
GRAPHQL_JWT = {
"JWT_COOKIE_SAMESITE": 'None',
"JWT_ALLOW_ARGUMENT": True
}
添加这些无效
"CSRF_COOKIE_SECURE": True,
"SESSION_COOKIE_SECURE": True,
"CSRF_COOKIE_SAMESITE": 'None',
"SESSION_COOKIE_SAMESITE": 'None',
"JWT_VERIFY_EXPIRATION": True,
将这些添加到 django 设置也没有用
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_SAMESITE = 'None'
我已经在这个问题上坚持了大约 3 天了,我已经准备好跳入河中去建造桌子了。请帮忙。
在版本 v0.3.2
上为 django-graphql-jwt 添加了对 JWT_COOKIE_SAMESITE
设置的支持。您可以在此处查看发布 releases。而当前的 django-graphql-auth 包依赖于 django-graphql-jwt v0.3.0
。更新您的要求将解决此问题。
所以问题是你正在使用
"JWT_COOKIE_SAMESITE": 'None'
只有当
"JWT_COOKIE_SECURE": True
和 JWT_COOKIE_SECURE 表示 cookie 将仅通过 HTTPS 连接发送,这不适用于 HTTP 连接。
考虑到您有 HTTP 并且后端使用与前端相同的域,那么您需要添加的只是
"JWT_COOKIE_SAMESITE": 'Lax'
"JWT_COOKIE_SECURE": False
cookie 默认为 “SameSite=Lax”
,这意味着仅当浏览器 URL 中的域与 cookie 的域匹配时才会设置 cookie
我正在使用 Django GraphQL JWT Library and Django GraphQL Auth
我一直收到这个错误 google chrome error
在 http://localhost:3000/ 和 https://localhost:3000/ 上使用此反应代码(针对相关性进行了修剪)
const [login] = useMutation(LOGIN_MUTATION, {
variables: {
email: email,
password: password
},
onCompleted: ({ tokenAuth }) => {
if (tokenAuth.success) {
setToken(tokenAuth.token);
}
}
});
现在,当我 运行 来自 graphiql 页面的这个突变起作用时,我最终得到了一个 JWT cookie,但不在反应站点上
mutation {
tokenAuth(
email:"********"
password:"*********"
){
token
refreshToken
success
errors
}
}
这行不通
GRAPHQL_JWT = {
"JWT_COOKIE_SAMESITE": 'None',
"JWT_ALLOW_ARGUMENT": True
}
添加这些无效
"CSRF_COOKIE_SECURE": True,
"SESSION_COOKIE_SECURE": True,
"CSRF_COOKIE_SAMESITE": 'None',
"SESSION_COOKIE_SAMESITE": 'None',
"JWT_VERIFY_EXPIRATION": True,
将这些添加到 django 设置也没有用
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_SAMESITE = 'None'
我已经在这个问题上坚持了大约 3 天了,我已经准备好跳入河中去建造桌子了。请帮忙。
在版本 v0.3.2
上为 django-graphql-jwt 添加了对 JWT_COOKIE_SAMESITE
设置的支持。您可以在此处查看发布 releases。而当前的 django-graphql-auth 包依赖于 django-graphql-jwt v0.3.0
。更新您的要求将解决此问题。
所以问题是你正在使用
"JWT_COOKIE_SAMESITE": 'None'
只有当
"JWT_COOKIE_SECURE": True
和 JWT_COOKIE_SECURE 表示 cookie 将仅通过 HTTPS 连接发送,这不适用于 HTTP 连接。
考虑到您有 HTTP 并且后端使用与前端相同的域,那么您需要添加的只是
"JWT_COOKIE_SAMESITE": 'Lax'
"JWT_COOKIE_SECURE": False
cookie 默认为 “SameSite=Lax”
,这意味着仅当浏览器 URL 中的域与 cookie 的域匹配时才会设置 cookie