Как использовать сессию cookie csrf (csrftoken) с django-rest-framework-social-oauth2 - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть настройка django-rest-framework-social-oauth2 для получения токена из django с помощью провайдера facebook:

curl -X POST -d "grant_type=convert_token&client_id=<client_id>&client_secret=<client_secret>&backend=facebook&token=<facebook_token> https://dev.myapp.com/api/auth/convert-token

Каждый раз, когда я делаю запрос к своему приложению, я добавляю токен в заголовок:

curl -i https://dev.myapp.com/api/users -H "Authorization: Bearer mytoken123"

Пока все работает

Я использую ReactJs в качестве внешнего интерфейса и выполняю вышеуказанный запрос от responsejs:

axios.post("https://dev.myapp.com/api/auth/convert-token", postData).then(res => {console.log(res);}

Если пользователь закрывает окна,он выходит из системы, так как у него больше нет доступа к токену, и если он возвращается к моему приложению, ему необходимо снова войти в систему.

Я бы хотел использовать куки-файл браузера для сохранения токена.я получаю от django-rest-framework-social-oauth2 и защищаю его защитой csrf, чтобы позволить пользователю получить доступ к моему приложению, не нажимая снова и снова «логин»

Я не знаю, как это сделать ия не знаю, возможно ли это?

Как мне установить django-rest-framework-social-oauth2, чтобы получить csrftoken и использовать его для каждого вызова API?

Единственное решение, которое яесть, чтобы создать другой видэто создаст файл csrftoken

from django.shortcuts import render_to_response
 from django.template.context_processors import csrf

 def my_view(request):
     c = {}
     c.update(csrf(request))
     data='my test'
     # ... view code here
     return Response(data, c)

Это представление возвращает файл cookie csrftoken

Но я хотел бы получить этот файл cookie csrftoken в то же время, чтобы получить токен oauth2.

Как я могу это сделать?У вас есть пример?какой-нибудь документ?Каков наилучший способ сделать это?

Если это невозможно, знаете ли вы какую-либо альтернативу, чтобы позволить пользователю получить доступ к моему приложению, не нажимая каждый раз «логин»?

Спасибо за ваши ответы

...