Mat*_*olz 6 authentication django login tastypie
我有一个Adobe Air移动应用程序,通过TastyPie与Django通信.要使用该应用程序,人们必须先注册.因此,他们必须提供他们的电子邮件和密码.之后他们就可以"登录"了.我认为最好的想法是,在输入成功的用户名/密码组合后,api-key将被发送回移动应用程序,在那里它将被缓存,因此用户"登录".
如果您认为有更好的方式来注册和"登录"用户,请告诉我.
在Django里面我有一个UserRessource类,用于在通过POST发送数据时注册新用户:
class UserResource(ModelResource):
class Meta:
allowed_methods = ['get', 'post']
queryset = User.objects.all()
resource_name = 'auth'
authentication = Authentication()
authorization = Authorization()
fields = ['username', 'email']
def obj_create(self, bundle, request=None, **kwargs):
username, email, password = bundle.data['username'], bundle.data['password'], bundle.data['password'],
try:
bundle.obj = User.objects.create_user(username, email, password)
except IntegrityError:
raise BadRequest('That username already exists')
return bundle
Run Code Online (Sandbox Code Playgroud)
这非常有效.
但现在我正在努力实际登录过程.在我看来,最好通过GET(和https)向这个资源发送用户名和密码,如果这些是有效的,返回用户api密钥.但这可能吗?它干净吗?如果您向该资源发送GET请求,通常TastyPie将显示当前在数据库中的所有用户.但我不需要那些数据,所以我可能会以某种方式覆盖它.我已经检查了http://django-tastypie.readthedocs.org/en/v0.9.9/resources.html但是我没有让它工作.是否有可能覆盖这种行为?
所以实际问题是什么是使用ApiKeyAuthentication"登录"用户的最佳方式? 而且是我的方法正确,干净或者你有更好的方法?和你有这种情况下,任何的例子吗?
非常感谢提前!
好吧,我将尝试解释我对该主题的观点:
首先,对我来说,tastypie 页面上的 UserResource 示例有一个重要问题:用户对象不应在任何时候呈现给单个用户,他们应该能够看到他们自己的“个人资料”或其他什么,但从不浏览并查看其他人。当然,这可以通过清除该资源的主“列表视图”并将 APIKeyAuth 应用于各个配置文件来使用 UserResource 来完成,但我仍然不喜欢 UserResource 的想法。
表单中的第二个,当您开发API(例如tastypie用法)时,APIKey是实际的“密码”,因此应请求发送的不是用户名和密码,而是通过其他方式获取的用户名和APIKey(通常是电子邮件或某种基于 UI 的网站)。建议通过授权标头发送它们,而不是在 GET 参数中发送。
第三,当我们谈论 API 时,不存在登录之类的东西 - 至少在 RESTFULL API 中没有 - 它在某种意义上是无连接的,因此您实际上将在每个请求中发送 Authorization 标头。至于问题,是的,您可以覆盖数据。查看 Tastypie 文档中的水合/脱水循环,了解它如何呈现内容,如果您有更多问题,请继续提问。
| 归档时间: |
|
| 查看次数: |
2118 次 |
| 最近记录: |