Как работать с JWT с Django и Redux - PullRequest
0 голосов
/ 13 января 2020

Итак, я недавно узнал об аутентификации JWT с использованием Django Rest Framework, и теперь я хотел бы использовать его. Настроить все с помощью DRF было легко, но теперь я столкнулся с проблемой: я понятия не имею, как использовать данные токены (access и refre sh) с помощью redux. Я также не знаю, как получить пользователя на основе данных токенов. Вот что я имею на данный момент. Мои действия:

import axios from 'axios';
import {
  LOGIN_STARTED,
  LOGIN_SUCCESS,
  LOGIN_FAILURE,
} from './types.js';


const loginStarted = () => ({
  type: LOGIN_STARTED,
})

const loginFailure = error => ({
  type: LOGIN_FAILURE,
  payload: {
    error: error
  }
})

const loginSuccess = (access_token, refresh_token) => ({
  type: LOGIN_SUCCESS,
  payload: {
    access_token: access_token,
    refresh_token : refresh_token
  }
})


export const authLogin = (username, password) => dispatch => {
  dispatch(loginStarted);
  axios.post("http://127.0.0.1:8000/api/token/", {
    username: username,
    password: password
  })
  .then( res => {
    console.log(res.data);
    dispatch(loginSuccess(res.data))
  })
  .catch( err => {
    console.log(err);
    dispatch(loginFailure(err.data));
  })
}

А мой редуктор выглядит так:

import {
  LOGIN_STARTED,
  LOGIN_SUCCESS,
  LOGIN_FAILURE,
} from '../actions/types.js';


const initialstate = {
  access: undefined,
  refresh: undefined,
  error: {}
}

export default function(state=initialstate, action){
  switch (action.type) {
    case LOGIN_SUCCESS:
      return {
        ...state,
        access: action.type.access_token,
        refresh: action.type.refresh_token,
      }
    case LOGIN_FAILURE:
      return {
        ...state,
        error: action.payload.error
      }
    default:
      return state;
  }
}

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...