Django rest framework 为什么在登录DRF API的URL路由上出现禁止的错误?
我通过django rest框架创建了一个简单的登录API。下面是代码片段: views.py url.py 现在,当我在邮递员中用电子邮件和密码进行发帖请求时。它抛出错误:Django rest framework 为什么在登录DRF API的URL路由上出现禁止的错误?,django-rest-framework,django-rest-auth,django-rest-knox,Django Rest Framework,Django Rest Auth,Django Rest Knox,我通过django rest框架创建了一个简单的登录API。下面是代码片段: views.py url.py 现在,当我在邮递员中用电子邮件和密码进行发帖请求时。它抛出错误: { "detail": "Invalid token." } 注意:因为我正在使用knox生成令牌。所以,当我进行新的注册时,我也会得到令牌。见下面的示例: { "status": "OK", "messag
{
"detail": "Invalid token."
}
注意:因为我正在使用knox生成令牌。所以,当我进行新的注册时,我也会得到令牌。见下面的示例:
{
"status": "OK",
"message": {
"email": "test.test@test.com",
"first_name": "est",
"last_name": "Sah",
"employee_code": "6124368",
"contact": "7500078619",
"dob": null
},
"token": "db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890"
我尝试了密码和令牌两种方式进行身份验证,但得到了相同的错误。在dev服务器运行的cmd提示符中,我看到下面的消息
[08/Apr/2021 15:26:33] "POST /apii/login/ HTTP/1.1" 403 27
Forbidden: /apii/login/
在postman的原始正文中,我在下面插入了json数据
{
"email": "test.test@test.com",
"password": "db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890"
}
下面是DRF的settings.py内容
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
#'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'knox.auth.TokenAuthentication',
],
}
不确定我是否用正确的方法,请建议
httpie输出
python.exe -m httpie 127.0.0.1:8000/apii/login/ 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'
HTTP/1.1 405 Method Not Allowed
Allow: POST, OPTIONS
Content-Length: 40
Content-Type: application/json
Date: Thu, 08 Apr 2021 11:52:31 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.8
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
{
"detail": "Method \"GET\" not allowed."
}
您是否尝试过在命令提示符下使用httpie进行post
$ http http://127.0.0.1:8000/{your_path} 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'
有趣的windows 10,不确定是否可以在windows平台上安装。如果有其他与windows兼容的工具,请告诉我。我没有测试,但它应该可以工作。请参见此处:。一旦安装了run c:\>python-m httpie{your_path}授权:令牌DB058F23ECC70F4FA3DE4AC69A04DC48BB7579A63EA1AD3D038CE59B1511890'谢谢,我可以下载并使用它了。我得到了输出,这似乎是显而易见的。请看我的最新数据的原始帖子。
python.exe -m httpie 127.0.0.1:8000/apii/login/ 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'
HTTP/1.1 405 Method Not Allowed
Allow: POST, OPTIONS
Content-Length: 40
Content-Type: application/json
Date: Thu, 08 Apr 2021 11:52:31 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.8
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
{
"detail": "Method \"GET\" not allowed."
}
$ http http://127.0.0.1:8000/{your_path} 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'