0

問題對象權限與Django的REST框架

我使用Django的REST框架爲匿名用戶只讀訪問 - 到目前爲止我一直使用DjangoObjectPermissions權限類。我使用django-rules來確定哪些用戶具有對象的權限。

但是,此權限類似乎拒絕對匿名用戶的讀取訪問。

我需要找到允許對所有用戶進行只讀訪問的最佳方式(已驗證或未驗證)。對於添加,修改和刪除 - 應該像平常一樣應用對象權限。

解決此問題的最佳方法是什麼? Django默認似乎沒有提供can_view權限。

也許這將涉及到爲每個模型手動添加can_view權限。或者也許最好以某種方式實現DjangoObjectPermissionsOrAnonReadOnly權限類別?

回答

1

的修復其實是非常簡單的檢查,你可以控制的。可以創建一個自定義權限類,延伸DjangoObjectPermissions,並覆蓋authenticated_users_only變量。

class DjangoObjectPermissionsOrAnonReadOnly(DjangoObjectPermissions): 
    authenticated_users_only = False 
0
from rest_framework import permissions 

,並只給

permission_classes = [permissions.IsAuthenticatedOrReadOnly, YourPermissionshere, ] 
在視圖集中

。這將完成這項工作。 如果未通過身份驗證,匿名用戶將得到一個只讀的權限

當權限檢查,而不是通過處理功能

self.check_object_permissions(self.request, obj) 
+0

permission_classes = [permissions.IsAuthenticatedOrReadOnly,YourPermissionsHere] –

+0

從DRF權限的文檔,這聽起來像用戶必須具有在所有的權限類權限,以便檢查通過?所以,在這種情況下'IsAuthenticatedOrReadOnly'會通過,但'YourPermissionsHere' ='DjangoObjectPermissions'會失敗?它是否正確? – Kieran

+0

是的。所有的權限類都應該滿足。你可以嘗試一樣的。它應該工作。 –

相關問題