【发布时间】:2018-05-09 12:51:23
【问题描述】:
我有简单的 Django DRF 应用程序设置,我已经实现了 JWT 身份验证。
我用Django REST framework JWT documentation
我正在使用 curl 来测试实现。
我可以使用文档中使用的以下符号成功获取令牌:
$ curl -X POST -d "username=admin&password=password123" http://localhost:8000/api-token-auth/
令牌以以下格式返回:
{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNpdHJ1Y3AiLCJleHAiOjE1MTE2NTEyMTQsInVzZXJfaWQiOjEsImVtYWlsIjoiY3VydGlzLnBva3JhbnRAZ21haWwuY29tIn0.F1TSkxe5tQVpddetUdOJDdAPP1XB9Bimb5U3c75oWd0"}
但是,当我尝试使用其他变体时,我收到了错误:
$ curl -X POST -H "Content-Type: application/json" -d '{"username":"admin","password":"password123"}' http://localhost:8000/api-token-auth/
我得到的错误是:
{"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"}
我在尝试刷新或验证令牌时也遇到了同样的错误:
刷新:
$ curl -X POST -H "Content-Type: application/json" -d '{"token":"<EXISTING_TOKEN>"}' http://localhost:8000/api-token-refresh/
验证:
$ curl -X POST -H "Content-Type: application/json" -d '{"token":"<EXISTING_TOKEN>"}' http://localhost:8000/api-token-verify/
我按如下方式添加令牌:
curl -X POST -H "Content-Type: application/json" -d '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNpdHJ1Y3AiLCJleHAiOjE1MTE2NDg5MjIsInVzZXJfaWQiOjEsImVtYWlsIjoiY3VydGlzLnBva3JhbnRAZ21haWwuY29tIn0.T5h_PSvzvKOZCPTS60x5IUm3DgAsRCRmbMJeGWZk3Tw"}' http://localhost:8800/api-token-refresh/
我是否可能错误地添加了令牌?是否需要其他格式的引号?
【问题讨论】:
-
您是否覆盖了任何视图?您的设置如何?我们实际上在生产中使用它,从我在视图和 url 中看到的内容来看,我们已经将 auth 类添加到登录视图中,并且我们已经自定义了 url 并直接调用了 refresh_jwt_token。
-
一个愚蠢的问题,但是您是否已经逃脱了数据?
-
不只是使用基本的基于类的视图。设置几乎直接来自 DRF 教程实现。您能否更具体地说明转义数据?
标签: python django django-rest-framework jwt