2010-05-03 24 views
2

在閱讀少量文檔後,我對如何開始使用shiro插件有點模糊。我決定不使用Nimble,因爲它有少量表格和UI插件。Grails Shiro插件:確認我的理解

我用自己的表格設置了通配符領域的shiro插件。我可以使用基於權限的(基於角色的)訪問控制,因爲它可以很好地擴展。現在,它的步驟。

  1. 的權限字符串指定的主題,並將其保存在數據庫中
  2. 檢查通過isPermitted,調用hasPermission(或相關標籤GSP)的權限。

現在,
1.何時使用通過過濾器的訪問控制?
2.是否有一個注入到控制器中的閉包,我可以定義其中的動作的權限?我讀了關於每個控制器上的accessControl靜態關閉的地方,但似乎沒有記錄。
3.如何創建一個典型的訪問控制場景,例如只有(東西,帖子等)的創建者可以刪除它?一種可能性是基於用戶標識符創建和保持許可字符串。檢查權限檢索對象(後),獲得用戶ID和主體比較..似乎有點複雜..任何簡單的實施?

非常感謝.. 巴布。

+0

我再次看過Nimble,看起來它並不是所有功能的中間環節。看起來它們是核心和社交功能的分歧..需要進一步探索..一個挑戰是將風格融入我的應用... – bsr 2010-05-03 07:07:05

回答

1

1什麼時候使用訪問控制安全過濾器?

A.當您想限制訪問控制器操作給認證用戶時,使用accessControl {true}。

B.當您想基於權限「$ {controllerName}:$ {actionName}」限制對控制器操作的訪問權限(無論參數內容如何)時,使用accessControl()。

C.如果您想限制基於參數內容的操作,例如只刪除一個你有刪除權限「$ {name}:$ {id}:delete」的域對象,你需要在控制器中明確地檢查isPermitted。

3如何創建一個典型的訪問控制場景,例如只有 創建者?

我會在創建帖子時向用戶添加必要的權限,例如, 「post:$ {postId}:*」通過這種方式,權限屬於用戶和/或角色,而不屬於任意域對象,正如Shiro的工作方式。與屬於文件和目錄而不是用戶的文件系統權限相反。

相關問題