第一次使用 axios 登录时如何设置令牌?

how to setup token for the first time login with axios?

在我的 React 应用程序中我有

axios.defaults.headers.common["Authorization"] = `Token ${localStorage.getItem("token")}\`;

随每个请求发送令牌。

现在,我正在尝试使用 djoser 包首次登录 Django 休息服务器,但我收到此 401 响应:{"detail":"Invalid token."}

我猜是因为还没有令牌。

设置:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 1000,
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}

我应该做前端还是后端,什么?

正如文档指出的那样登录,您应该到达端点 /auth/token/login/ 并提供 username & password 以检索新令牌。

关于 Authorization 你可以这样做:

const token = localStorage.getItem("token")
axios.defaults.headers.common["Authorization"] = token ? `Token ${token}` : null

或使用拦截器:

  axios.interceptors.request.use(function (config) {
    const token = localStorage.getItem("token")
    config.headers.Authorization =  token ? `Token ${token}` : null
    return config;
  });