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