2010-01-17 17 views
4

我開發與結構工程師一套鋼製設計工具Django的Web應用程序。每個設計工具都會有一個輸入數據庫表,每個表的每一行都將對應一個特定的設計條件以「解決」。用戶可以單獨或分組工作。每個用戶都需要持續訪問他自己的工作,以便可以對設計進行改進,複製和改編,並且可以在任何方便的時候創建報告,通常在項目結束時需要硬拷貝文檔。然後,數據庫內容必須能夠在針對給定設計項目以數月或甚至數年計量的期間內發生的任意數量的會話中使用。Django的認證細粒度訪問控制

當有一組用戶,通常都與給定的設計辦公室相關聯,它可能會爲他們所有可以接受的聯合和相互訪問對方的工作。該應用程序支持日常的工程生產活動,而不是創新的知識產權工作,而且內部隱私在行業中不是常見的。但是,這項工作絕對不能被羣體之外的人撬動。理想情況下,每個小組將有一個或多個超級用戶被授權監督小組成員。他們可能需要的主要工具可能是從組中刪除一個成員,中止他的訪問權限。這將是一個用戶組超級用戶,並且不會與站點一側的超級用戶相同。

爲便於訪問,每個數據庫表的每一行都會有項目編號/項目名稱對,這將是一個給定公司部署用戶或用戶組唯一關聯。不同的公司可以很容易地選擇使用重複的項目數,甚至還可以選擇重複的項目名稱,以便區分到底哪些數據庫行屬於一個給定的用戶(或組)可能會在一個單獨的有關「所有權名單進行跟蹤「每個用戶(或組)的表格。 (希望)最終,與不同(通常是競爭對手)公司關聯的數百個用戶(或用戶組)將爲數千個使用這些工具的項目解決數萬個設計條件。

所以,這裏是我的問題:

首先,有沒有試圖挽救更多的事情,從Django的contrib.auth代碼的任何一點?當我察覺到它,contrib.auth是專爲認證和訪問控制是適合於博客和網絡新聞,但不支持訪問進行細粒度控制「的內容。」

其次,有沒有我可以適用於該問題的任何可用的模板,圖案,例如,策略或設計的建議?

+0

這個項目聽起來真棒。你必須在Django中做到這一點。後來如何? – 2014-07-23 09:55:04

+0

我的工作也是如此。你的第三段是問題:不管你對一個項目的定義是什麼,你都應該爲它使用一個關鍵數據來與它關聯數據。永遠不要依賴人的投入。對此的一個很好的測試是輸入(例如項目名稱)應該隨時可以改變。然後你只是說這個項目(id = 12345abc)分配了這些組,並且這些組擁有這些用戶。只允許具有該權限鏈的用戶查看項目數據。 – 2014-07-23 11:51:16

回答

4
+0

伊格納西奧,你的答案的簡潔與我的問題的詳細程度相比較!我發現* django-authority *的文檔正處於開始階段。 Python代碼*中的處理權限部分尚未寫入。我需要這個,因爲我打算在大多數情況下自動應用權限。你是使用Django權威的專家嗎?你願意諮詢小時費嗎?我想我需要一名教練! – 2010-01-18 19:29:26

+0

我自己對此不太瞭解,但是我已經開發人員了。如果您願意,您也可以嘗試在文檔中給出的支持選項。 http://packages.python.org/django-authority/support.html#support – 2010-01-18 21:45:50

+0

我在這裏看到,http://docs.djangoproject.com/en/dev/topics/auth/,Django開發版本有一些對對象級(行級)權限的支持級別。我明白這將在2010年3月完成。 – 2010-01-26 07:46:23