对于初学者的问题表示歉意。
对于将RESTful服务与不同用户结合使用的一般方法,我有些困惑。特别是,我主要关心的是开发一个API,该API仅在我编写的各种应用程序(即Web应用程序)以及可能会访问相同数据的某些移动应用程序中使用。
(1)由django-tastypie之类的东西生成的rest API是否适合(甚至是最佳实践)用于非公共(public)用途(即,当我只想通过我的应用程序授予对这些数据的访问权限时)?
(2)在创建对Restful API的登录访问时,我是为我的Web应用程序的所有用户创建一个登录名吗?还是为我自己和我的Web应用程序创建一个登录名?是否应该将我的Webapp的用户帐户与访问Restful API的帐户区分开来?
基本上,我想使用Django和django-tastypie创建一个应用程序,该应用程序将允许用户登录,创建和查看对象,订阅用户并查看其对象。我想出于自己的JavaScript目的使用Tastypie API,以简化在我的 View 中创建序列化和更新相关数据的过程。这些用户帐户在此图片中适合什么位置?谢谢!
最佳答案
如果我理解正确,那么您在这里处理两个单独的身份验证问题:
(A)访问API-仅适用于您的网络/移动应用
(B)通过API访问用户数据-通过网络/移动应用为用户提供
对于(A),您可以只对 key 进行身份验证。因此,您的Web或移动前端将在每个API请求中发送该 key ,这将确保您仅从授权客户端接收请求。
如果要对不同的应用程序使用不同的键,则可以创建一个简单的django模型来跟踪它们,并添加新的键或根据需要撤消它们。
如果您对所有内容都使用SSL,则应避免嗅探攻击以发现 key 。我认为这里最弱的一点是,有人可能会对您的移动应用程序进行反向工程以找到 key ,因为您必须将 key 存储在应用程序中。
对于(B),请使用django身份验证系统。 tastypie Basic或ApiKey Authenticators应该允许您通过API登录用户并通过其进行登录,并基于他们的权限来访问或创建数据。我认为这就是您在第二个问题中提出的问题?
如果您使用 session ,我认为您不能对(A)和(B)使用相同的身份验证模型,因为您不能同时拥有两个事件 session 。
关于django - RESTful,用户身份验证和Django-tastypie,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10646427/