我正在做一个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);
}
};
1条答案
按热度按时间oxf4rvwz1#
但是,如果为Axios切换标头配置,则此问题将得到解决。
令牌用于身份验证,因此登录完成并生成令牌后,应随每个请求发送令牌以识别使用情况。
但如果没有发送Django会抛出401未授权错误
https://www.django-rest-framework.org/api-guide/authentication/https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401