首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Djoser 400坏请求登录用户

Djoser 400坏请求登录用户
EN

Stack Overflow用户
提问于 2021-05-21 14:30:38
回答 1查看 854关注 0票数 0

我正在使用django rest框架和vue创建一个电子商务应用程序,我使用djoser.authtoken来处理身份验证。

我可以成功地创建一个用户,向/users/发出post请求,但是每当我尝试登录时,我总是在控制台中获取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

错误消息并没有给出任何有用的信息,但是下面是我的代码的一些相关片段:

代码语言:javascript
复制
# 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)
代码语言:javascript
复制
# 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',
]
代码语言:javascript
复制
// 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)
                    }
                })
EN

回答 1

Stack Overflow用户

发布于 2022-04-10 01:01:16

我也面临着同样的问题。但我意识到,当您尝试使用用django设置的用户名和密码登录时,就会发生这种情况。在这种情况下,这个旧帐户没有分配给它的令牌。当您在前端注册一个新帐户并使用该新帐户登录时,服务器将使用200成功代码进行响应。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67638870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档