如何使用电子邮件登录用户并使用Django Rest Framework JSON Web令牌注销?

Saq*_*Ali 4 python django rest django-rest-framework

我有一个现有的,工作的Django应用程序,它实现了许多Django-REST框架API.我刚刚用Django-rest-framework-JWT添加了用户身份验证,现在我正在尝试学习它.我已经确认,如果我执行以下卷曲,它会向我发出令牌:

curl -X POST -d "username=myuser&password=mypassword" http://localhost:3050/api-token-auth/
Run Code Online (Sandbox Code Playgroud)

但我有一系列问题,我认为这些问题没有在文件中得到解决.请回答以下问题:

  1. 如何使用curl使令牌无效?我需要在用户注销时这样做.
  2. 这些令牌存储在DB中的哪个位置?实现后django-rest-framework-jwt,我在Django Admin界面中看不到任何新表
  3. 我想允许我的用户使用他们的用户名电子邮件登录.所以我想将api-token-auth端点包装在一个自定义端点中,该端点检查给定的字符串是电子邮件还是用户名.如果是电子邮件,我会查找用户名.然后调用api-token-auth.那个端点应该怎么样?我不知道怎么包装这个api-token-auth method.

小智 8

  1. 使用JWT进行身份验证时,通常会将令牌存储在浏览器的localstorage或sessionstorage中.要注销,只需删除令牌即可.没有别的办法可以让你失效.
  2. 使用这种方法进行身份验证的一个好处是令牌不会持久存储在数据库中,因此您无需在进行身份验证时查询会话存储.
  3. 这也应该可以使用自定义Django身份验证后端.