2010-06-07 72 views
2

我正在努力爲現有應用程序配置Spring-Security,只是基本的安全性(即用戶可以根據他們的角色查看哪些頁面)。問題出現了,想知道我們是否可以設置java中每個頁面需要的角色,而不是ApplicationContext.xml。你可以通過編程來配置Spring-Security嗎?

這個想法是將它們存儲在我們數據庫的表中,所以我們可以輕鬆地將它們更改爲重新部署。這可能嗎?怎麼樣?

回答

5

是的,你可以通過編程來配置Spring-Security。但我不認爲這是你想要/需要做的。

問題出現了,想知道是否可以設置java中每個頁面需要的角色而不是ApplicationContext.xml。

您可以實現自己的AccessDecisionManager類,它查詢您的數據庫以獲取每個資源/頁面的規則(或其他)。這在SpringSecurity手冊的Section IV中有描述。

或者,您可以在您的MVC控制器中嵌入您自己的自定義訪問控制邏輯。使用SpringSecurityContext來獲取請求的對象,剔除身份和/或權限,然後根據需要執行決策。

+0

感謝您指出我真正需要的東西。我剛剛完成設置,似乎工作得很好。 – 2010-06-08 16:42:07

1

我們使用攔截器做了這個。基本上,一個MethodInterceptor代理任何你想要的方法的調用(即從你的數據庫中獲取一個對象)。然後,您可以通過編程攔截對象並檢查當前用戶,並根據訪問控制執行任何您想要的任何操作。如果這意味着查詢數據庫以獲取有權訪問的用戶列表(因此可以在不修改代碼的情況下更改列表),那麼就這樣吧。

相關問題