2013-06-25 67 views
0

我正在運行Grails 2.2.1。 我有一個Grails服務,充當氣氛處理器..
請參考以下鏈接:由通過def springSecurityService其注入https://bitbucket.org/bgoetzmann/grails-atmosphere-plugin/wiki/Home
無法將服務注入AtmosphereHandler

我試圖使用Spring Security服務在這裏面,你簡單的方法,即, 。 但是當服務點擊處理程序時,
springSecurityService.getCurrentUser()返回空值。
用戶已登錄,我可以讓他進入我的控制器。我認爲該服務不是以某種方式注入的。
經過一番研究,我碰到這個問題
Injecting service into Grails Atmosphere Handler class
但兩者的答案都是過時...
請幫幫忙!


編輯:我的服務是這樣:

AtmosphereRequest req = r.getRequest(); 
if (req.getMethod().equalsIgnoreCase("GET")) { 
    log.info "got get, and suspending." 
    r.suspend(); 
    } else if (req.getMethod().equalsIgnoreCase("POST")) { 
     def data = req.getReader().readLine().trim() 
     log.info "got some data:\n $data" 
     if (data == "GET_NEARBY"){ 
      log.info "finding nearby..." 
      def user = springSecurityService.getCurrentUser() 
      log.info "user is $user" //USER IS NULL HERE 

       //...some logic 
     } 
    } 
+1

你能後的服務類的部分(氛圍處理員)? 「但是當一個服務點擊處理程序」 - 有點混亂。 – dmahapatro

+0

我編輯了它..這是在我的'onRequest()'方法內 –

+1

當你說你有Grails服務時,你的意思是你有一個服務類像'AtmosphereHandlerService'或'XyzService',由命令'grails create- service'?是對的嗎? – dmahapatro

回答

0

試試這個:

def ctx = ServletContextHolder.servletContext.getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT) 
def springSecurityService = ctx. springSecurityService 

    def currentUser = springSecurityService.currentUser 

現在你應該可以使用springSecurityService

+0

我說: 高清CTX = ServletContextHolder.servletContext.getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT) \t高清springSecurityService = ctx.springSecurityService 和它說類[ com.core.TripDiscovererService]:構造函數拋出異常;嵌套的異常是java.lang.NullPointerException:無法獲得null對象的屬性'springSecurityService' –

+0

好吧,我現在得到'springSecurityService',但是:'springSecurityService .getCurrentUser()'爲null! –

+0

@AtharvaJohri def currentUser = springSecurityService.currentUser試試這個。 – confile