django-rest-framework 令牌认证和注销

Posted

技术标签:

【中文标题】django-rest-framework 令牌认证和注销【英文标题】:django-rest-framework Token Auth and logout 【发布时间】:2015-03-07 07:21:07 【问题描述】:

据了解,obtain_auth_token 视图用作登录功能。您提供凭据并取回令牌。什么会注销?我应该在注销时删除令牌吗?最佳做法是什么?

如果删除没问题,那么如何同时处理多个客户端。比如说,用户从移动设备上注销,但想在网络上保持登录状态。 Token 模型当前与 User 具有 OneToOne 关系。

请给我一些建议。谢谢

【问题讨论】:

【参考方案1】:

Django REST 框架提供的TokenAuthentication 旨在用作非常简单的令牌 身份验证。我的意思是,你得到了

将 API 使用者与用户联系起来的简单令牌 ...那个doesn't rotate by default ...那个doesn't expire by default ...在 API 使用者之间共享(单个令牌)

如果您正在寻找比这更高级的东西,您通常必须寻找不同的令牌身份验证方法。这可以像继承标准TokenAuthentication 类和视图(如链接)一样简单,但Token 模型不容易交换。这意味着将user 字段更改为ForeignKey,允许您为一个用户拥有多个令牌,并不容易实现。

幸运的是,Django REST framework does support other authentication methods,例如 OAuth 和 JSON Web Tokens,它们都支持用户的多个令牌。可以找到常见的认证类比较at this Stack Overflow answer。

【讨论】:

谢谢。最初我正在考虑扩展令牌,但现在你说这不是微不足道的,我会试试django-rest-framework-jwt。看起来很有希望。

以上是关于django-rest-framework 令牌认证和注销的主要内容,如果未能解决你的问题,请参考以下文章

Django-Rest-Framework 系统检查自定义 HTTP 标头(应用程序 - 令牌)

如何使 DRF ( Django-REST-Framework) 令牌保持不变,使其在每次页面刷新后不会丢失?

在视图集中创建的 Django-rest-framework 权限

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

Django-Rest-Framework JWT 单元测试说“未提供身份验证”

RESTful API 的令牌认证:是不是应该定期更改令牌?