我正在使用 Django Rest Framework 和 Django OAuth Toolkit 实现 OAuth2 提供程序。
Django OAuth Toolkit 已经拥有一组用于管理 OAuth 应用程序的视图。此视图允许第三方应用程序开发人员在应用程序模型上执行基本的 CRUD。还有示例视图供资源所有者授权第三方应用程序。
但是我无法找到资源所有者撤销第三方应用授权的正确方法。有一个撤销令牌端点,但如果我做对了,它会起到不同的作用。
本质上,我尝试构建一个类似于 GitHub 的“授权应用程序”页面的视图:
看起来 RefreshToken 模型 是我应该用来列出连接的模型。但当用户重新授权该应用程序时,其工作效果并不如预期。每次成功授权提示后都会创建 RefreshToken 实例,并且连接列表会随着重复而增长。
有人使用 Django OAuth Toolkit 成功实现了类似的视图吗?
我有同样的问题.. token.revoke() 方法似乎不适用于刷新令牌一.. 所以我使用 token.delete() 完全删除数据库中的令牌.. 我是 oauth 系统的新手,但是我希望仅删除令牌就足以终止该登录。如果是这样,这是我删除它的观点,你也可以尝试一下..
@login_required
def revoke_token(request, token_key):
try:
access_token = AccessToken.objects.get(token=token_key, user=request.user)
refresh_token = RefreshToken.objects.filter(access_token=access_token).first()
access_token.delete()
if refresh_token:
refresh_token.delete()
messages.success(request, "Session terminated successfully.")
except AccessToken.DoesNotExist:
messages.error(request, "Session not found.")
return redirect('sessions')