我是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
有人可以向我解释一下吗?
感谢阅读!
答案 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
命令有效,因为您使用的端点支持基本身份验证(您也可以使用第二次调用中获得的令牌)。