将OAuth2令牌限制为Django中的特定模型/视图

时间:2014-04-03 13:34:26

标签: django api rest oauth-2.0 django-rest-framework

我正在使用Django Rest Framework在Django中开发我的第一个简单的API接口。我正在尝试创建一个Web服务,为我的游戏提供高分表。然后,游戏将通过API通过http请求发布和检索他们的高分。

目前我的模型结构看起来像这样:

  • 游戏
    • Highscoretable
      • HighscoreEntry

既然该服务将处理多个不同游戏的分数,我想为每个游戏分别提供oauth2令牌并限制该游戏的api权限。我设法使用本指南设置了oauth2身份验证:http://www.django-rest-framework.org/api-guide/authentication

但是,目前它似乎可以访问整个API。接下来我检查了http://www.django-rest-framework.org/api-guide/permissions,其中提到限制权限到子集功能我需要自定义权限类。

根据这些信息,我尝试使用oauth2搜索有关如何执行此操作的示例。在同一页面中有一个自定义类的示例。但是,我不知道如何将它应用于oauth2。我可以以某种方式为我的Game模型设置一个特定的access_token,以便在请求到来时,我可以将请求者的令牌与Game自己的令牌进行比较吗?如果是这样的话?

TL;博士;如何为具有唯一oauth2令牌的模型创建自定义权限类?这样每个令牌都会授予其相应模型的权限。

1 个答案:

答案 0 :(得分:0)

为了控制访问令牌权限,您应该使用范围。访问令牌范围的想法是基于访问令牌范围为定义的操作集,资源或其他任何内容(由您决定)提供权限。在您的情况下,您应该为不同的游戏提供不同的范围。请注意,作用域本身不会将用户限制为某些端点,服务等。如何应用作用域限制取决于OAuth20提供程序。