我正在使用 django rest 框架和 vue 创建一个电子商务应用程序,我正在使用 djoser.authtoken 来处理身份验证。
我可以成功地创建一个带有发布请求的用户,/users/
但是每当我尝试登录时,我都会不断地进入xhr.js:177 POST http://127.0.0.1:8000/api/v1/token/login/ 400 (Bad Request)
控制台和[22/May/2021 03:06:11] "POST /api/v1/token/login/ HTTP/1.1" 400 68
服务器。
错误消息没有提供任何有用的信息,但这里是我的代码的一些相关片段:
# myproject/urls.py
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/', include('djoser.urls')),
path('api/v1/', include('djoser.urls.authtoken')),
path('api/v1/', include('product.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# myproject/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'corsheaders',
'djoser',
'product',
]
CORS_ALLOWED_ORIGINS = [
"http://localhost:8080",
"http://127.0.0.1:8080",
"http://localhost:3000",
"http://127.0.0.1:3000",
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
// axios request
await axios
.post('/api/v1/token/login/', formData)
.then(res => {
const token = res.data.auth_token
this.$store.commit('setToken', token)
axios.defaults.headers.common['Authorization'] = 'Token ' + token
localStorage.setItem('token', token)
const toPath = this.$route.query.to || '/cart'
this.$router.push(toPath)
})
.catch(err => {
if(err.reponse){
for (const property in err.response.data) {
this.errors.push(`${property}: ${err.response.data[property]}`)
}
}
else {
console.log(err)
}
})