如何在 Django OAuth Toolkit 中撤销应用授权?

问题描述 投票:0回答:1

我正在使用 Django Rest Framework 和 Django OAuth Toolkit 实现 OAuth2 提供程序。

Django OAuth Toolkit 已经拥有一组用于管理 OAuth 应用程序的视图。此视图允许第三方应用程序开发人员在应用程序模型上执行基本的 CRUD。还有示例视图供资源所有者授权第三方应用程序。

但是我无法找到资源所有者撤销第三方应用授权的正确方法。有一个撤销令牌端点,但如果我做对了,它会起到不同的作用。

本质上,我尝试构建一个类似于 GitHub 的“授权应用程序”页面的视图:

看起来 RefreshToken 模型 是我应该用来列出连接的模型。但当用户重新授权该应用程序时,其工作效果并不如预期。每次成功授权提示后都会创建 RefreshToken 实例,并且连接列表会随着重复而增长。

有人使用 Django OAuth Toolkit 成功实现了类似的视图吗?

python django oauth
1个回答
0
投票

我有同样的问题.. 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')
© www.soinside.com 2019 - 2024. All rights reserved.