2011-11-02 62 views
8

我有一個場景,我試圖將彈簧安全性與運動衫結合起來用於我的REST API。將彈簧安全性3與平針織休息API結合起來

我需要比較複雜(我認爲),它是如下:

春季安全被用來攔截的URL,並迫使基本身份驗證才能訪問REST資源。這似乎是好的,因爲我使用http客戶端來測試它。

但是我想要做的是以某種方式訪問​​被加載的用戶對象,以檢查掛起用戶的某些額外權限(具有布爾標誌的地圖對象以指示對象屬性是否可見)。執行加載的代碼有效,但在Spring認證之後,我如何才能在實際的REST資源方法本身中訪問User對象?這可能嗎?

所以步驟是:

1)客戶端發出一個REST API調用 2)彈簧截距URL檢查用戶名和密碼在HTTP報頭 3)供給然後將其餘的資源方法被訪問,如果有效的憑證是目前

但在第3步之前,我想以某種方式將加載的用戶對象傳遞給實際的資源方法本身,以便我可以進一步應用一些邏輯來限制用戶可以根據我已加載的權限查看的內容。 ?這可能嗎?我想我已經在使用Spring和REST訪問方法之前查看了一些用於檢查User Roles的代碼,但是如果任何人有任何鏈接或想法非常好。

如果可以,請幫助。非常感謝。

回答

5

我通過使用由bean工廠構造的請求範圍代理來解決此問題。

這使您可以簡單地將當前已通過身份驗證的用戶注入到任何彈簧管理bean中,在我的案例中,我的Jersey Resources屬於該類別。我將我的用戶注入到資源下面的層中,但它們都是一樣的。

Someone else elegantly blogged the full solution here.

+0

感謝@Derek troy-West。找到優秀的答案,這是我所做的。 – user983022

+0

不用擔心,不客氣。 –