Проблемы с аутентификацией с django-webpack-loader с vuejs и django restframework и restauth - PullRequest
0 голосов
/ 01 апреля 2019

Я создал внешний интерфейс с vue.js, используя vue cli и webpack, а бэкэнд - с помощью django restframework, где я также реализую социальную аутентификацию для Google с помощью restauth. До того, как я использовал веб-пакет django, вход и выход из системы работали нормально и, как и ожидалось. (Я должен упомянуть, что я использовал токен-аутентификацию) в моем файле settings.py, у меня была включена как аутентификация сеанса, так и аутентификация токена в возможностях аутентификации restframework. Включение двух настроек никогда не вызывало проблем. Однако после использования загрузчика django webpack для рендеринга файлов внешнего интерфейса с использованием шаблонов django я постоянно получаю сообщение об ошибке, в котором говорится, что мой токен csrf отсутствует. В этом случае вход в систему будет работать нормально, если я удалю параметр сеанса аутентификации из файла settings.py, однако.

Кто-нибудь знает, почему это происходит?

https://medium.com/@rodrigosmaniotto/integrating-django-and-vuejs-with-vue-cli-3-and-webpack-loader-145c3b98501a

Я использовал вышеупомянутый блог для реализации функции загрузчика webpack

Я удалил строку rest_framework.authentication.SessionAuthentication из строки settings.py после использования загрузчика django-webpack, и проблема была решена

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authtoken',
    'rest_framework.authentication.BasicAuthentication',
    'rest_framework.authentication.SessionAuthentication',
)
}

Я в основном изменил это, как показано ниже:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authtoken'
    'rest_framework.authentication.BasicAuthentication',

)
}

1 Ответ

0 голосов
/ 02 апреля 2019

, поскольку вы, вероятно, используете axios, вам нужно включить эти две строки в ваш main.js

/* configure axios to forward the csrftoken back to Django on POST requests */
axios.defaults.xsrfHeaderName = 'X-CSRFToken';
axios.defaults.xsrfCookieName = 'csrftoken';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...