如何在DRF ViewSet中校验URL路径参数的多资源权限?
Django REST Framework 多对象权限校验问题
我的应用使用如下URL路径:account/<ACCOUNT_PK>/project/<PROJECT_PK>/。使用Django权限机制时,默认只会校验路径中最后一个参数(此处为project)的权限,但我需要同时校验Account对象的权限。
示例请求如下:
curl -s -u test:password \ -H 'content-type: application/json' \ -X POST -d '{"name": "new_project", "account": 3}' \ 127.0.0.1:8000/account/3/project/
在这个示例里,我需要同时校验请求数据和URL参数中的Account权限。目前我已经通过两种方式实现了需求:一是在序列化器类中编写valid_account方法,二是继承rest_framework.permissions.BasePermission自定义权限类。但这两个方案对URL路径的依赖性极强,想问问有没有其他可行的方案,或者相关的第三方包可以实现这个需求?
另外,我之前尝试过使用不同的内置权限类,或者在ProjectViewSet中添加app.change_account到permissions_required里,但都出现了错误。
内容的提问来源于stack exchange,提问作者Chris Chipman
相关产品推荐
相关产品推荐

