// try to execute the req, if it fails logout, and redirect to login.
const baseQueryWithAuth: BaseQueryFn = async (args, api, extraOptions) => {
const result = await baseQuery(args, api, extraOptions);
if (result.error?.status === 403 || result.error?.status === 401) {
// non authorized, then redirect to login page.
// if we have jwt, here u should update the access token
localStorage.removeItem(TOKEN_KEY_IN_LOCAL_STORAGE);
Router.replace('/auth/login');
}
return result;
};
1条答案
按热度按时间amrnrhlw1#
因为你使用rtk查询,你可以更新你apiSlice baseQuery函数,来检查auth错误和重定向,我的建议是:
创建一个基本查询,在其中检查401和任何其他需要的错误:
在上面的代码片段中,当我将令牌删除称为注销时,因为令牌在数据库中已经无效,所以我只需要在前面删除它,因此不需要无效请求。
上面提到的
baseQuery
可以这样做:现在,由于你有一个支持auth的工作库查询,你可以使用它为你的项目创建一个主rtk查询
apiSlice
: