2013-04-06 44 views
0

我有Web應用程序,我使用Spring MVC。現在我想爲管理員和簡單用戶添加不同的數據源。所以我的應用程序應該通過匿名用戶連接到DB,它只能從表中選擇並插入到某些表中。但是,當用戶通過管理員自己授權時,應用程序應在數據庫連接上更改用戶和密碼,並將根用戶權限連接到數據庫。彈簧3.0.5可以做到這一點嗎?春天使用不同的數據源,取決於用戶

+0

當然,您可以配置多個數據源,然後在您的應用程序中包含邏輯,根據用戶的授權級別選擇一個邏輯。那是你想要還是希望Spring自動將調用路由到特定的數據源或類似的東西? – david 2013-04-06 17:31:53

+0

是的,我想自動的方式。你能否給我一些材料或例子,說明如何在運行時更改數據源?我認爲Spring Security可以做到這一點,但我沒有找到任何有關它的信息。 – 2013-04-06 18:33:35

+0

難道你不是隻有一個'dao'類專門用於管理相關的活動,並且有相應的'datasource'自動裝入它嗎?那麼'dao'類可以被自動裝配到適當的控制器中,等等? – david 2013-04-06 18:39:43

回答

1

嘗試用

org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter 

可以經由setCredentialsForCurrentThread在數據源設置的憑證()方法在登錄過濾器,例如。

+0

太棒了!正如你所說,我在AppContext中聲明瞭這個bean,然後在我的CustomAuthenticationManager中聲明瞭這個bean,當用戶或管理員登錄時,我將使用@Autowire獲取這個數據源,併爲它設置管理員密碼。但我有一個問題:這個數據源 - 會話bean還是單例?因爲我將在jdbcTemplate中使用它。或者我應該聲明這個數據源與會話範圍? – 2013-04-07 12:40:57

+0

使用單例數據源並讓連接池處理每個用戶池連接。 – 2013-04-07 18:15:12

+0

好吧我如何使用Spring來管理連接池? – 2013-04-07 22:37:40

相關問題