带有vuejs的django-webpack-loader和django restframework和restauth的身份验证问题

时间:2019-04-01 19:10:38

标签: django vue.js webpack django-rest-framework django-rest-auth

我使用vue cli和webpack使用vue.js创建了一个前端,并使用django restframework创建了一个后端,其中我还使用restauth为Google实现了社交身份验证。在使用django Webpack之前,登录和注销均可以正常工作,并且符合预期。 (我应该提到,我在使用tokenauthentication)在我的settings.py文件中,我在restframework身份验证功能中同时启用了会话身份验证和令牌身份验证。启用这两个设置不会造成任何麻烦。但是,在使用django webpack加载器使用django模板呈现前端vue文件之后,我将不断收到一个错误,提示我的csrf令牌不存在。但是,如果我从settings.py文件中删除了sessionauthentication选项,则登录可以正常工作。

有人知道为什么会这样吗?

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

我使用以上博客来实现webpack加载器功能

使用django-webpack-loader后,我从settings.py中删除了“ rest_framework.authentication.SessionAuthentication”行,并且问题已解决

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 :(得分:0)

由于您可能正在使用axios,因此需要在main.js

中加入这两行
/* configure axios to forward the csrftoken back to Django on POST requests */
axios.defaults.xsrfHeaderName = 'X-CSRFToken';
axios.defaults.xsrfCookieName = 'csrftoken';