ios - django-allauth 中多个设备的访问 token 授权

标签 ios django django-rest-framework django-allauth django-rest-auth

我正在使用 django-allauthdjango-rest-auth适用于 iOS 移动应用程序后端。我是 Django Rest Framework 的新手,尤其是提到的框架。这些非常适合基于访问 token 的授权。如您所知,用户成功登录后何时会收到访问 token ,而当注销时,访问 token 将被删除。但是,如果有多个设备,我假设用户将从所有设备注销。有没有办法为每个设备创建访问 token 并使用这些访问 token 进行授权?

最佳答案

当您处理自己的 API、客户端和第三方 API 之间的身份验证时,您永远不想向客户端公开第三方应用程序的 token 。我有 covered this in the past on Stack Overflow对于 python-social-auth , 我建议寻找 django-allauth以及

您说过您正在使用 django-rest-auth ,它为每个用户维护一个在多个客户端之间共享的 token 。这与 TokenAuthentication 非常相似Django REST Framework 提供的,它有许多相同的缺点。因为所有客户端都为一个用户共享相同的身份验证 token ,所以如果出于任何原因必须撤销 token ,所有客户端都会受到影响。更糟糕的是,django-rest-auth允许用户明确地“注销”,这会立即撤销所有人的 token 。如果只有一个或两个客户端将使用您的 API,并且他们可以处理神秘消失的 token ,这种方法很有效,但它不适用于任何更大的东西。它也不支持用户的多个 token ,这正是您正在寻找的。

我通常建议 API 使用基于 token 的身份验证,如 OAuth,以及 django-oauth-toolkit往往是 Django REST Framework 的推荐之一。这将允许您在本质上代理第三方和您的客户端之间的请求,同时为客户端保留唯一的用户 token 。由于 token 对客户端而言是唯一的,因此您无需担心一个客户端的 token 被撤销或过期会影响另一个客户端,因为 token 将彼此独立。

许多“知名人士”都在使用 OAuth,例如 Stack Exchange , Google , 和 Facebook .虽然它不直接支持“注销”的概念,但通常建议您为应用程序的用户创建自己的页面以撤销应用程序的 token ,这样他们就可以控制谁可以和不能访问 API代表他们。

关于ios - django-allauth 中多个设备的访问 token 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27645300/

相关文章:

python - Django REST Framework 嵌套资源 key "id"无法访问

django - 引发类型错误 ("%s() got an unexpected keyword argument ' %s'"

ios - 手势识别器并不总是被触发

ios - 即使应用程序被杀死,也会在特定时间调用方法

python - Python 的 if 条件表达式中的大 django 查询集

django - 为什么 Django 开箱即用的密码重置功能不起作用?

django - 如何在 DefaultRouter() 中进行反向操作

iphone - 在这条线上崩溃

iphone - Reminders.app UIScrollView 滚动解释。

python - 部署在pythonanywhere上的django项目链接静态文件出错