繁体   English   中英

Django rest React 框架 401 错误 Axios

[英]Django rest framework 401 error with React Axios

我正在从事一个项目,该项目使用 Django rest 框架后端和 React 作为前端。 Axios 用于 http 请求,JWT 用于认证。 我面临的问题是,在登录并获取令牌 django 后,每个请求都会抛出 401 错误。 但是如果为 Axios 切换 header 配置,这个问题就解决了。

请找到以下代码供您参考并帮助解决。

提前致谢。

DRF **settings.py**

 REST_FRAMEWORK = {
  'DEFAULT_AUTHENTICATION_CLASSES': (
      'rest_framework_simplejwt.authentication.JWTAuthentication',
 )
}

SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(days=1),
'REFRESH_TOKEN_LIFETIME': timedelta(days=2),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': False,
'UPDATE_LAST_LOGIN': True,
}


CORS_ALLOWED_ORIGINS = [
"http://localhost:3000"
]

**axios setup**


const axiosClient = axios.create({
baseURL: import.meta.env.VITE_API_URL,
headers: {
"Content-Type": "application/json",
},
});

export default axiosClient;

const jToken = useSelector((state) => state.authSlice.accessToken);
axiosClient.interceptors.request.use(function (config) {
config.headers.Authorization = `Bearer ${jToken}`;
 return config;
});


**Axios request**

const fetchData = async () => {
try {
  const response = await axiosClient.get(AppContext.managementStudentUri);
  //   console.log(response.data);
  setData(response.data);
  setIsLoading(false);
} catch (error) {
  apiErrorHandler(error);
}
};

但是如果为 Axios 切换 header 配置,这个问题就解决了。

令牌用于身份验证,因此一旦登录完成并生成令牌,它应该与每个请求一起发送以识别使用。

但如果它没有发送 Django 抛出 401 未经授权的错误

https://www.django-rest-framework.org/api-guide/authentication/ https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM