簡體   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