添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Hi All

I am using ReactJS with Axios to call a protected API. I can receive authentication JWT access and refresh tokens successfully, user logins, but when the client tries to send the data request along with the access token, the server returns 401 unauthorized.

I have been stuck with this problem for a week, and tried everything

I set default headers as
axios.defaults.headers.common[‘Authorization’] = getJWT()

I set authServices.Js component as
import http from “…/common/httpService”;
import jwt_decode from ‘jwt-decode’;

export async function Login(username, password) {
const { data: JWT } = await http.post(“ http://127.0.0.1:8000/auth/jwt/create ”,
{ username, password });
localStorage.setItem("access ", JWT.access);
localStorage.setItem("refresh ", JWT.refresh);

export function logout() {
localStorage.removeItem("refresh ")
localStorage.removeItem("access ")

export function getCurrentUser() {
try {
const JWT = localStorage.getItem("access ")
return jwt_decode(JWT)
} catch (error) {
return null

export function getJWT() {
return localStorage.getItem("access ")

Login.js submit function as
doSubmit = async () => {

try {
  const { data } = this.state;
  await Login(data.username, data.password);
  window.location = '/passenger'
} catch (error) {
  if (error.response && error.response.status === 401) {
    const errors = { ...this.state.errors }
    errors.password = error.response.data.detail
    this.setState({errors: errors})

I am looking for help on how to successfully send data with access token back to the Django server, and get access to the protected API

Thanks alot

To get JWT token from the server, i am sending the following POST request

export async function Login(username, password) {
const { data: JWT } = await http.post(“http://127.0.0.1:8000/auth/jwt/create”,
{ username, password });
localStorage.setItem("access ", JWT.access);
localStorage.setItem("refresh ", JWT.refresh);

I can get the token from the server and user and the user is redirected to the data page

The problem is the data is cannot be fetched from the server and hence not displayed. Instead Axios throws an error of 401 unauthorized. This means the token from the client when requesting data is not the same as the token it previously received from the server. This points to coding issue as the client is authenticated but not authorized

The course on React shows on NodeJS, but i am using Django

Here is my code of contacting the API for authorization after login

doSubmit = async () => {

try {
  const { data } = this.state;
  await Login(data.username, data.password);
  window.location = '/passenger'
} catch (error) {
  if (error.response && error.response.status === 401) {
    const errors = { ...this.state.errors }
    errors.password = error.response.data.detail
    this.setState({errors: errors})
              

/*set the AUTH token resquet */

function axiosInterceptors() {
axios.interceptors.request.use(function (config) {
const token = getToken();

config.headers.Authorization = token ? `Bearer ${token}` : "";
return config;