RESTful,用户身份验证和Django-tastypie

时间:2012-05-18 03:43:23

标签: django authentication rest tastypie

为初学者问题道歉。

我对将RESTful服务与不同用户结合使用的一般方法有点困惑。特别是,我主要关注的是开发一个API,我只会通过我编写的各种应用程序,即Web应用程序,以及可能会访问相同数据的一些移动应用程序。

(1)django-tastypie为非公开使用适当(甚至是最佳实践)生成的休息API是否正常 - 即,当我只想通过我的应用程序授予对此数据的访问权限时?

(2)在创建Restful API的登录访问权限时,我是否为我的网络应用程序的所有用户创建了一个登录名 - 或者我是否为我自己创建了一个登录名Web应用程序?我的webapp用户帐户是否应被视为与访问Restful API的帐户不同?

基本上,我想使用Django和django-tastypie创建一个允许用户登录,创建和播放的应用程序。查看对象,订阅用户并查看其对象。我想将Tastypie API用于我自己的javascript目的,以便在我的视图中创建序列化和更新相关数据。这些用户帐户在哪里适合这张图片?谢谢!

2 个答案:

答案 0 :(得分:4)

如果我理解正确,您在这里处理两个独立的身份验证问题: (A)访问API - 仅限您的网络/移动应用 (B)通过API访问用户数据 - 通过您的网络/移动应用程序访问用户

对于(A),您可以对密钥进行身份验证。因此,您的网络或移动前端会在每次API请求时发送该密钥,这样可以保证您只接收来自您授权的客户的请求。

如果您想为不同的应用程序使用不同的密钥,您可以创建一个简单的django模型来跟踪它们,并添加新密钥或根据需要撤消它们。

如果您将SSL用于所有内容,那么您应该安全地嗅探攻击以发现您的密钥。我认为这里最薄弱的一点是,有人可以对您的移动应用程序进行反向工程以找到密钥,因为您必须将密钥存储在应用程序中。

对于(B),使用django auth系统。 tastypie Basic或ApiKey Authenticators应该允许您通过API登录用户,并根据他们的权限,访问或创建数据。我想这就是你在第二个问题中提出的问题?

如果您正在使用会话,我认为您不能为(A)和(B)使用相同的身份验证模型,因为您不能同时拥有两个活动会话。

答案 1 :(得分:0)

我是 Django DRF 的新手,我可以使用一些帮助。我刚刚创建了一个Note应用程序,我正在考虑是否需要用户/作者/ clients我项目中的第二个应用程序。我只是希望用户能够登录,创建自己的笔记,并且笔记应该有一个(或多个)作者,以便我可以过滤用户数据。任何帮助?

PS:我也是初学者,所以如果你愿意,我们可以保持联系。