Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是如何使用Django Simple JWT的正确要点吗?_Django_Django Rest Framework - Fatal编程技术网

这是如何使用Django Simple JWT的正确要点吗?

这是如何使用Django Simple JWT的正确要点吗?,django,django-rest-framework,Django,Django Rest Framework,客户端将是Android 通过POST to/THOTKENURL使用用户名和密码来获取访问和刷新令牌,并将访问和刷新令牌存储在本地存储器中 对受保护端点的任何API调用使用auth标头中的令牌 每当前端需要API调用时,您总是必须执行if/else工作来检查响应是否表示令牌已过期,如果已过期,则使用本地存储中的刷新令牌获取新的访问令牌,然后将新的访问令牌存储在本地存储中,然后对任何您想要的进行API调用 是的,这是一种方法,例如,在发出请求(如果设置了时间戳)或检查响应之前,在客户端/

客户端将是Android

  • 通过POST to/THOTKENURL使用用户名和密码来获取访问和刷新令牌,并将访问和刷新令牌存储在本地存储器中

  • 对受保护端点的任何API调用使用auth标头中的令牌

  • 每当前端需要API调用时,您总是必须执行if/else工作来检查响应是否表示令牌已过期,如果已过期,则使用本地存储中的刷新令牌获取新的访问令牌,然后将新的访问令牌存储在本地存储中,然后对任何您想要的进行API调用


是的,这是一种方法,例如,在发出请求(如果设置了时间戳)或检查响应之前,在客户端/中间件上使用拦截器检查过期时间。如果需要,您可以刷新。请记住,您可能还希望合并一个队列,以确保失败的请求仍然被用户视为成功的请求(例如,已过期的请求成功刷新)。

谢谢。你提到的最后一部分。你是说如果客户端令牌过期然后刷新,我应该通知用户吗?不,理想情况下,你希望对用户隐藏它,这就是为什么你要实现一个队列,如果cookie刷新成功,可以重试失败的请求。除非您需要注销他们,否则您会通知他们并说“嘿,由于安全原因,我们已将您注销”。尽管通常只有当用户空闲且应用程序有安全要求时才会出现这种情况。这是用户体验和安全性之间的平衡。有很多关于如何处理JWT刷新的文章,所以我建议大家仔细阅读,这是一个常见的设计挑战。