的Django的第三方使用

问题描述:

我们正在Django中我们自己的解决方案,我们正在使用DRF & JWT生成API为我们的Android应用程序(提供API,以便创建将达到我们的服务器和Django的代码,就可以将工作的API然后进行必要的CRUD操作)。的Django的第三方使用

现在,我们计划让我们的APi选择由第三方用户使用,以便他们的解决方案可以直接访问我们的API。

我们需要知道API是否被我们自己的Android应用程序或JavaScript代码所击中,或者它是否被第三方代码击中(我们需要指望第三方击中我们的API的次数)。 无论如何我们可以解决这个问题吗?

如果我们要为第三方提供一个单独的API并为我们自己的用法分开API,那么使用JavaScript,可以轻松读取我们的内部API并滥用它们(即,使用我们的内部API从我们的第三方党代码)。

任何通用的帮助,让我们开始在正确的方向,以便我们可以阅读和学习通过将有所帮助。

您应该查看权限(http://www.django-rest-framework.org/api-guide/permissions/)和节流(http://www.django-rest-framework.org/api-guide/throttling/)。您可能想要阻止/限制某些用户代理,例如卷曲,安卓等。

from rest_framework import permissions 

class UserAgentBlacklist(permissions.BasePermission): 
    message = 'Please set a custom user agent when using scripts with our API.' 

    def has_permission(self, request, view): 
     user_agent = request.META['HTTP_USER_AGENT'] 
     for agent in ['libcurl', 'Python-urllib', 'python-requests']: 
      if user_agent.startswith(agent): 
       return False 
     return True 
+0

我已经使用JWT权限系统。但我想知道是否有任何方法(必须有)从我们的Android应用程序或我们的JS代码从第三方代码调用中分离API调用?关于限制,我没有考虑用户使用API​​访问我们的解决方案的次数。我只需要实际的数量。 – Sayantan

+0

用示例代码更新了注释,以解释如何使用权限来阻止某些客户端。 –

+0

现在,假设我们有一个使用android的第三方应用程序,以及我们自己的应用程序使用android ....这两个如何区分?这将有所帮助。 – Sayantan