получить токен CSRF в реагировать родной - PullRequest
0 голосов
/ 07 января 2020

Я построил django сервер для управления моими данными, затем у меня есть приложение для реагирования на рабочем столе, где я могу создавать новых пользователей / данные для входа / публикации, оно работает безупречно, основано на проверке токена csrf и проблем с который. Тем не менее, у меня также есть приложение-native, которое должно позволять пользователю входить в систему, и получать данные, которые ему принадлежат. И вот вопрос, как получить токен CSRF в реакцию с родным? В настольном приложении это выглядит примерно так, но я понятия не имею, как войти в систему, чтобы реагировать на него, так как я не могу просто получить Cook ie с токеном csrf.

componentDidMount() {
    const csrfToken = Cookies.get('csrftoken')
    this.setState({csrfToken})

  }

    loginHandler = login_data => {
    this.setState({
      user: login_data.user,
      password: login_data.password
    }, () => {
      const auth = {
        "username": this.state.user,
        "password": this.state.password
      }

      fetch("http://localhost:8000/data/", {
        method: 'POST',
        credentials: 'include',
        headers: {
          "X-CSRFToken": this.state.csrfToken,
        },
        body: JSON.stringify(auth)
      })
        .then((res) => res.json())
        .then(resp => console.log(resp))
        .then(() => this.getData())
        .catch(() => this.setState({
          user: "",
          passowrd: ""
        }))
    })
  };

1 Ответ

2 голосов
/ 07 января 2020

Существует два варианта:

  • Если ваш django API приложения обслуживает только мобильные приложения (реагирует на нативное), то вам вообще не нужна защита CSRF для тех API, которые используются приложение. Это потому, что CSRF защищает от подделки в браузерах, а не в приложениях.

  • Но если ваш API-интерфейс также используется в браузере, то вы должны создать конечную точку для специального получения токена csrf (GET / api / csrftoken) с представлением Django, которое возвращает токен csrf в json.

...