我使用wicket 1.4.9並實現了spring + wicket驗證角色並使用基於頁面角色的@AuthorizeInstantiation。我有多個自定義角色。使用wicket驗證wicket組件auth-role
我按照這個鏈接來實現的基本知識: https://cwiki.apache.org/WICKET/spring-security-and-wicket-auth-roles.html
之後,我已經實現了我自己的UserDetailsService有我自己的角色/用戶數據庫。
現在,我該如何強制控制組件的角色,例如鏈接,按鈕?像 鏈接A只能被SUPER_USER,DR_MANAGER訪問。 (角色來自數據庫)。
我已經這樣做,它似乎工作,但是這樣做的好方法? OrbitWebSession是AuthenticatedWebSession類型。
@Override
public boolean isVisible() {
if(OrbitWebSession.get().getRoles().hasRole("SUPER_USER")){
return true;
}
return false;
}
謝謝。
您提到角色基於數據庫查詢。請注意在isVisible()中執行昂貴的調用。這是一個簡單的計算,但要確保一切都正確緩存。 – jbrookover 2011-05-24 19:16:32
好吧,請澄清我的困惑,如果我的自定義AunthenticatedWebSession overries getRoles()方法,並且如果此方法從SecurityContextHolder獲取角色從我的UserDetails加載角色,是不是緩存?或者它在每次調用時從我的用戶實體獲取所有角色? – Shahriar 2011-05-25 19:02:02
我不熟悉春天;我只是想確保您的用戶對象被緩存 - 每次運行此方法時運行數據庫查詢都會很糟糕。 – jbrookover 2011-05-25 19:25:32