Django rest框架401错误与React Axios

bqujaahr  于 2022-12-27  发布在  Go
关注(0)|答案(1)|浏览(165)

我正在做一个Django rest framework后端和React作为前端的项目。Axios用于http请求和JWT用于认证。我面临的问题是,在登录和获取令牌后,Django对每个请求都抛出401错误。但是如果Axios的头配置被切换,这个问题就可以解决。
请查找以下代码供您参考并帮助解决。
先谢了。

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);
}
};
oxf4rvwz

oxf4rvwz1#

但是,如果为Axios切换标头配置,则此问题将得到解决。
令牌用于身份验证,因此登录完成并生成令牌后,应随每个请求发送令牌以识别使用情况。
但如果没有发送Django会抛出401未授权错误
https://www.django-rest-framework.org/api-guide/authentication/https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401

相关问题