Django-rest-auth基本授权错误{“password”:[“(此字段为必填项”)}

时间:2015-10-05 22:40:05

标签: django django-rest-framework django-rest-auth

我是django-rest-auth和apis的新手。 这是我第一次构建一个rest auth,我对授权头和内容类型不是很熟悉。

我试图理解为什么当我尝试使用基本授权在/login/中对用户进行身份验证时这样:

curl -X POST -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" 'https://myurl.com/rest-auth/login/' --insecure

我收到此错误消息:

  

{“password”:[“(此字段为必填项”)}

在身体中传递用户名和密码时如下:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'username=myuser&password=mypassword' 'https://myurl.com/rest-auth/login/' --insecure

我拿到了钥匙:

  

{ “键”: “b5c0f3a9c7b2fc2f58a74b25f816e2968c64712f”}

为什么会这样?

我也想知道为什么在/user/中尝试相同时它没有给我任何错误并且给我的用户模型序列化

curl -X GET -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" -H "Cache-Control: no-cache" 'https://myurl.com/rest-auth/user/' --insecure

我能理解的唯一区别是/login我正在使用POST而在/user/中是GET

有人可以向我解释一下吗?

感谢阅读!

2 个答案:

答案 0 :(得分:1)

refer Inet 模式示例(使用 AltAuth 的非特权用户)

$ echo -e "GET http://localhost/slurm/v1/diag HTTP/1.1\r\nAccept: */*\r\n" |
slurmrestd -f etc/slurm.token.conf
● slurmrestd: operations_router: /slurm/v1/diag for pipe:[1052487]
● HTTP/1.1 200 OK
● Content-Length: 973
● {
● "parts_packedg": 1,
● "req_timeg": 1568051342,
● "req_time_startg": 1568050812,
● "server_thread_count": 3,
… JSON continues ...

答案 1 :(得分:0)

' / auth / login /'端点专门用于获取身份验证令牌,以便在应用程序的其余部分使用令牌身份验证。它本身并不支持任何身份验证方法。第二个curl命令使用正确的方法。第三个curl命令有效,因为您使用的端点支持基本身份验证(您也可以使用第二次调用中获得的令牌)。