Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs @urql/exchange身份验证不在标头中发送令牌_Reactjs_Next.js_Urql - Fatal编程技术网

Reactjs @urql/exchange身份验证不在标头中发送令牌

Reactjs @urql/exchange身份验证不在标头中发送令牌,reactjs,next.js,urql,Reactjs,Next.js,Urql,我正在我的项目中使用urql GraphQL客户端。在我登录之后,它不会像应该的那样自动在授权头中添加令牌。我必须刷新页面一次,然后在标题中设置令牌。我已经阅读了文档,似乎无法找出我做错了什么 以下是我的实现: export const urqlClient=createClient({ url:`${url}`, 交易所:[ 重复数据交换, 缓存交换, 身份交换({ getAuth:async({authState,mutate}:any)=>{ //对于初始启动,从存储器(本地存储器、异步

我正在我的项目中使用urql GraphQL客户端。在我登录之后,它不会像应该的那样自动在授权头中添加令牌。我必须刷新页面一次,然后在标题中设置令牌。我已经阅读了文档,似乎无法找出我做错了什么

以下是我的实现:

export const urqlClient=createClient({
url:`${url}`,
交易所:[
重复数据交换,
缓存交换,
身份交换({
getAuth:async({authState,mutate}:any)=>{
//对于初始启动,从存储器(本地存储器、异步存储器等)获取身份验证状态
const token=Cookies.get('token');
如果(!authState){
如果(令牌){
返回{token};
}
返回null;
}
//刷新令牌
const decoded=jwt_decode(令牌如有);
if(typeof decoded.exp!='undefined'&&decoded.exp{
//令牌未处于身份验证状态,请返回操作而不进行更改
如果(!authState | |!authState.token){
返回操作;
}
//fetchOptions可以是一个函数(请参见客户端API),但您可以根据使用情况对其进行简化
常量获取选项=
typeof operation.context.fetchOptions==“函数”
?operation.context.fetchOptions()
:operation.context.fetchOptions | |{};
返回makeOperation(operation.kind、operation、{
…operation.context,
获取选项:{
…获取选项,
标题:{
…fetchOptions.headers,
授权:`Bearer${authState.token}`,
},
},
});
},
}),
交换,
]
});