2009-10-08 166 views
2

我期望完成的是爲我的Spring MVC應用程序處理身份驗證模型的過濾器(或類似)。我的應用程序也託管在Google App Engine上。Spring MVC自定義身份驗證

此應用程序的身份驗證可能傾向於非常動態,並且權限不會完全適合預定義的角色結構。這些權限將綁定到我的控制器上的不同操作方法。理想情況下,我希望能夠註釋這些權限,但我打開其他建議。

我發現沒有太多有關如何完成此操作的信息。理想情況下,我希望能夠攔截對控制器操作的調用,並能夠讀取註釋並進行相應處理。我所希望的是,這裏的某個人對Spring MVC有更多的瞭解,並且我可以在其中注入一些自定義代碼,並且能夠指引我朝着正確的方向發展。

回答

3

我仍然會使用Spring Security來做到這一點。它可能沒有一個100%適合你的登錄方案的類,但這就是繼承的原因。寫你自己的。您可以輕鬆擺脫基於ROLE的DecisionManager,並使其適合您的範例。

根據你的意見你檢查了Spring中的MethodInterceptor嗎?它會創建一個代理,它將攔截對代理類的任何方法的調用,並允許您根據所需的任何代碼運行或禁止該方法。在Spring Security中有一個AbstractSecurityInterceptor,但我覺得它很難使用,對於大多數訪問決策,我認爲它是過度的。

因此,我會使用Spring Security來驗證用戶身份(並填充SecurityContext),然後使用攔截器隔離您希望保護的控制器中的方法。

+0

我辭職寫我自己的代碼實現,但我發現Spring Security缺少文檔,如果你有任何鏈接,你會發現有用它將不勝感激。謝謝。 – bdorry

+0

當然,我知道我花了一段時間才完成了這一切 - 而且一些文檔有些模糊。如果看起來他們認爲有多種方式可以做某件事,那麼可能有。你可以用更多的細節來擴充你的問題,也許我可以指出你正確的方向。 – Gandalf

+0

爲了更加簡明扼要,我真正需要的是能夠攔截一個動作並對已認證的用戶執行一些快速檢查。這些檢查將從數據庫讀取權限並根據業務執行重定向。 這些信息可以從App Engine的內置服務中獲得,也可以通過使用我自己的專有服務獲得,但我目前無法找到攔截對控制器操作調用的方法。 – bdorry