9-b*_*its 6 django django-models django-permissions
您如何确保用户只能编辑他们创建的对象?设置它的最佳方法是什么?
我正在使用django-rest-framework,并想知道是否有办法限制用户查看/编辑他们不"拥有"的对象.
class Video(models.Model):
owner = models.ForeignKey(User)
...
Run Code Online (Sandbox Code Playgroud)
因此,用户'x'应该只能在其owner_set中编辑视频.
假设您有会话并且身份验证模型已打开。
您必须确保所有视图(REST 和非 REST)都需要身份验证。
对于非 REST,这很容易。您只需在任何地方使用基本的@login-required装饰器即可。
对于 Django-REST 框架,请阅读:http://django-rest-framework.org/library/authentication.html#module-authentication。
您必须使用身份验证混合来确保身份验证确实发生。
该框架支持 BASIC 身份验证,这需要 SSL 连接才能保证安全。实现 DIGEST 身份验证并不太困难,它不需要 SSL。
避免会议。登录和注销违反了 REST 原则。该框架支持会话,但不太理想。
一旦所有请求都经过身份验证,您就会了解该用户。
如果您了解用户,那么user.video_set效果就很好。您还可以使用它Video.objects.filter(...)来确保您正在查询用户,但是如果您使用user.video_set.get(...)oruser.video_set.filter()或其他任何东西,则更容易确认代码是否正确。
所有相关的授权检查都是在视图中完成的。您正在为您的模型资源提供视图。
这些是“基于阶级的观点”。文档位于: https: //docs.djangoproject.com/en/dev/topics/class-based-views/#viewing-subsets-of-objects
诀窍是选择所有正确的混合和序列化器。
例如,您可以这样混合 get 处理:
http://django-rest-framework.org/howto/mixin.html
get您将在方法中实现过滤器
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |