2009-09-19 102 views
5

我想問一下使用Google App Engine和Python處理基於角色的安全性的常見方式是什麼?Google App Engine和Python基於角色的安全性

在app.yaml中,有「登錄」部分,但可用值僅爲「admin」和「required」。

您通常如何處理基於角色的安全性?

  • 兩個表創建模型:角色和的UserRole
  • 的角色表進口值
  • 手動添加用戶到的UserRole
  • 檢查用戶是否是一個正確的角色組

任何其他想法或任何其他基於角色的安全方法,請讓我們知道!

回答

4

我會爲代表用戶的模型添加一個ListProperty角色來做到這一點。該列表包含給定用戶所屬的任何角色。這樣,如果你想知道給定的用戶是否屬於給定的角色(我期望,最常見的操作),它是一個快速的成員資格測試。

您可以將角色名稱作爲字符串直接放入列表中,也可以向另一個實體添加一個間接層以指定角色的詳細信息,以便稍後更改其詳細信息。但是,這有一個額外的RPC的運行時間成本來獲取有關角色的詳細信息。

如果您想從給定角色中刪除所有用戶或執行任何其他類型的全局操作,則此方法的缺點在於此。我想你可以將一個角色標記爲「已刪除」,但是你仍然有數據凌亂了你的所有用戶模型,直到你手動清除它們。所以我很好奇聽到別人的建議。

+0

+1。如果要修改具有角色的所有用戶,則可以對listproperty執行查詢,就像查找具有該角色的所有用戶的常規屬性一樣。 – 2009-09-19 15:26:29

+0

所以這意味着沒有專門的方法來處理來自GAE和Python的基於角色的安全性?我們仍然需要手動處理它? – 2009-09-19 16:56:32

+0

正確 - 儘管我不確定「專用」解決方案甚至看起來像什麼,因爲人們擁有各種各樣的身份驗證需求。 – 2009-09-20 11:08:24