我的應用程序體系結構是像這樣:Grails的Spring Security的自定義用戶詳細信息豆類得到重寫
MainWebApp
-> CustSecPlugin
-> Spring-Security-Core
所以我有我周圍的彈簧安全插件包,以提供額外的實現,在多個常見插件的網絡應用程序。我做的一件事是使用自定義UserDetailsService
。
我必須遵循這個指南,可以讓我的自定義安全插件在獨立運行時,自定義用戶的詳細信息,豆grails-app/conf/spring/resources.groovy
定義該文件沒有得到因爲它的一個插件讀取,所以我將豆類移入doWithSpring {}
關閉。這在獨立運行時仍然有效。
不過我現在所發現的是,當與Web應用程序運行,我的自定義信息服務被忽略,現在的校長是一個標準的GrailsUser
如果我把我的bean定義,並將其移動到Web的應用程序的grails-app/conf/spring/resources.groovy
然後它的工作。不過,我不想在每個使用此插件的應用程序中定義這些bean。
我不確定發生了什麼。爲什麼userDetailsService()
bean作爲Web應用程序的插件運行時會被忽略?我可以看到其他bean正在被正確設置(打印出所有的bean名稱並使自己成爲一個虛擬bean)。它幾乎像它恢復了一樣。
有沒有什麼地方可以定義這個bean來使它工作?
如何解決此問題的最佳方法是?
我唯一的問題是我的內部插件設置了安全核心插件的配置參數。而我發現的是,如果我的包裝插件在覈心之後加載,則配置無法正確設置,並且插件無法加載。我的插件中是否有其他地方可以聲明bean? – DJOodle
對於通常我使用插件[Platform Core](http://grails.org/plugin/platform-core)的配置。它有一個關閉'doWithConfig'來聲明將與應用程序合併的配置。 –
啊平臺核心和loadAfter的結合解決了我的問題,之前沒看過這個插件。乾杯 – DJOodle