2011-07-11 49 views

回答

1

是的,你可以這樣做。刪除@With註釋,當你想限制訪問連接的用戶使用安全控制器的這種方法:

Secure.checkAccess(); 

使用這種方法,你甚至可以用@Check註解。例如:

@Check("member") 
    public static void restrictedAction() { 
     Secure.checkAccess(); 
     ... 
    } 
+0

你有沒有試過從模塊內的控制器調用checkAccess方法?它似乎沒有工作。它會拋出該方法不可見的錯誤。事實上,當你看到方法的定義時,默認情況下它沒有被指定爲公共的。它是如何在應用程序控制器中沒有任何問題的情況下工作的? – preslavrachev

1

不,沒有簡單的方法來做到這一點。您可以檢查角色,但不能連接用戶,訪問者。

您將不得不添加@Before註釋,這將會有點複雜。只需將您的控制器分解爲多個控制器。順便說一下,函數最好是這樣做,而不是混合公有/私有方法。

3

是的,你可以,但它需要的安全類的一些調整。如果你檢查@Secure,它有一個用@Before註解的方法。根據documentation,您可以指出@Before應用於哪些方法以及跳過哪些方法。

@Before(unless="login") 

所以這將是一個在公共方法上不運行@Before的問題。請注意,使用@With可能無法正常工作,您可能需要在管理安全性的控制器中創建自己的@Before(在安全中調用正確的方法)。

但是,只有2個控制器會更簡單,一個用於安全用戶,另一個用於公共方法。

+0

我向上推薦了兩個控制器的建議。我遇到了這個問題,因爲'Before'註解不能正確使用應該跳過的'unless'數組方法名稱。你提到它可能無法正確使用'With',這是我的情況。你有更多的信息,爲什麼呢?錯誤或設計副作用?謝謝! – palako