2011-10-17 63 views
41

我正在構建一個web應用程序,需要在Django和金字塔之間進行選擇。我決定去金字塔。金字塔中的用戶身份驗證

我知道金字塔帶有自己的認證/授權框架,看起來不錯。但是我在金字塔的任何地方都沒有看到用戶/組/權限被定義的地方。在Django中,這些東西是免費的。

我正在使用SQLAlchemy並想知道是否有類似的用戶/組/權限已經構建,我可以導入。我寧願不自己定義這些對象/映射和密碼哈希/鹽度。

Django's definitions這些東西幾乎是我所需要的。

任何人都可以指向我可以使用的東西嗎?或者我需要推出自己的?

回答

62

金字塔有一個更靈活的認證系統。是的,如果你想要像Django的用戶/組/權限概念那樣簡單,那麼靈活性可能會很嚇人。

金字塔沒有「用戶」對象,因爲它沒有關於如何存儲數據或使用什麼ORM的假設,因此沒有像contrib.auth這樣的東西。您需要使用一個庫,例如cryptacular或passlib,在PYPI上找到這些密碼。

至於金字塔的系統內的想要的用戶/組/權限,這是通過定義一個具有__acl__映射組權限的RootFactory實現相當簡單。權限被分配給視圖,因此通常非常靜態。如果你希望這些團體(金字塔稱之爲「校長」)是動態的,這也是可以實現的。

我建議看看金字塔wiki2 tutorial,以及shootout demo

如果您計劃使用SQLAlchemy,還有一些第三方軟件包用於協助金字塔內的授權。 apex是一個更完整的堆棧解決方案,並且ziggurat_foundations是SQLAlchemy上的一個較低層,可幫助您爲應用程序設置用戶和組。

你的問題是相當高的水平和授權是一個「難題」,所以我會在這裏停止,並避免從金字塔教程已經存在的教程和資源反饋到幾個第三方的例子。如果您有任何具體問題,請隨時在另一個問題中提問。

+0

謝謝,這是很好的信息。我越看過django的實現(並且與您的repsonse一起),我越發現這個問題更多的是SQLAlchemy問題,因爲任何'User'相關對象都需要綁定到SQLAlchemy。 – lostdorje

+2

感謝您參加槍戰演示的指針。用完整的用戶和組模型編寫得很好,以及一整套測試。 –

+0

如果在身份驗證方面有更多預構建的東西,即使它可以全部(或部分)被吹掉並替換爲高級用戶的自定義內容,也會很好。只要您記錄需要針對自定義解決方案實施的操作,就可以擁有用戶的概念,而無需假設存儲系統。 –