Ios django allauth中多个设备的访问令牌授权

Ios django allauth中多个设备的访问令牌授权,ios,django,django-rest-framework,django-allauth,django-rest-auth,Ios,Django,Django Rest Framework,Django Allauth,Django Rest Auth,我正在使用和用于iOS移动应用程序后端。我不熟悉Django Rest框架,尤其是上面提到的框架。这对于基于令牌的访问授权非常有用。正如您所知,成功登录后,用户何时收到访问令牌,何时注销,访问令牌将被删除。但是,在多个设备的情况下,我假设用户将从所有设备注销。是否有方法为每个设备创建访问令牌并使用这些访问令牌进行授权?当您处理自己的API、客户端和第三方API之间的身份验证时,您永远不希望将第三方应用程序的令牌公开给您的客户端。我为pythonsocialauth,写了一篇文章,我建议大家也看看

我正在使用和用于iOS移动应用程序后端。我不熟悉Django Rest框架,尤其是上面提到的框架。这对于基于令牌的访问授权非常有用。正如您所知,成功登录后,用户何时收到访问令牌,何时注销,访问令牌将被删除。但是,在多个设备的情况下,我假设用户将从所有设备注销。是否有方法为每个设备创建访问令牌并使用这些访问令牌进行授权?

当您处理自己的API、客户端和第三方API之间的身份验证时,您永远不希望将第三方应用程序的令牌公开给您的客户端。我为
pythonsocialauth
写了一篇文章,我建议大家也看看
djangoallauth

您说过您正在使用
django rest auth
,它为每个用户维护一个令牌,并在多个客户端之间共享。这与Django REST框架提供的
TokenAuthentication
非常相似,它也有许多相同的缺点。由于所有客户端都为一个用户共享相同的身份验证令牌,因此如果出于任何原因必须撤销该令牌,则所有客户端都将受到影响。更糟糕的是,
django rest auth
允许用户显式地“注销”,这会立即撤销每个人的令牌。如果只有一个或两个客户机将使用您的API,并且他们可以处理神秘消失的令牌,那么这将非常有效,但是对于任何更大的来说,它都不起作用。它也不支持用户使用多个令牌,这正是您需要的

我通常建议API使用基于令牌的身份验证,如OAuth
django OAuth toolkit
往往是django REST框架的推荐工具。这将允许您在第三方和您的客户机之间代理请求,同时为客户机唯一的用户保留令牌。由于令牌对于客户端是唯一的,因此您不必担心一个客户端的令牌被撤销或过期会影响另一个客户端,因为令牌彼此独立


OAuth被许多“大牌”使用,比如,和。虽然它不直接支持“注销”的概念,但通常建议您为应用程序的用户创建自己的页面,以撤销应用程序的令牌,这样他们就可以控制谁可以代表自己访问API。

嗨,Kevin,谢谢您的回答。但这种方法如何帮助解决多设备问题呢?我已经研究了django oauth工具包,但它并不是我真正需要的。我不打算处理客户端应用程序,我的后端仅用于本机iOS应用程序。我有和这里描述的相同的问题