2017-09-05 53 views
0

嗨我正在嘗試Spring安全核心與Grails並試圖獲取當前登錄的用戶。但是,我得到了java.lang.NullPointerException,這是由以下原因造成的:無法在null對象上獲取屬性'principal'。Spring安全服務與Grails - 獲取當前用戶'NULL'錯誤

下面是我的代碼:

import static org.springframework.http.HttpStatus.* 
import grails.transaction.Transactional 
import grails.plugin.springsecurity.annotation.Secured 

@Secured(['ROLE_ADMIN']) 
@Transactional 
class MyController { 

    static allowedMethods = [save: "POST", update: "PUT", delete: 
          "DELETE"] 

    def test(){ 
     def springSecurityService 
     render "Current User is: [" + springSecurityService.principal 
            + "]" 
     } 
    } 

由於種種原因springSecurityService爲空。我錯過了什麼?

請指教。先謝謝你!

+0

'def springSecurityService'應該在類級別的方法'test()'之外。 –

+0

非常感謝你Joshua!這工作!真的很感激它! –

+0

當你把它放在類級別時,你實際上是在你的控制器bean類中注入一個spring服務bean,它與spring autowired是等價的/相同的。但內部方法,它只是一個變量。 –

回答

0

正如約書亞摩爾建議的,這個工作!非常感謝!

import static org.springframework.http.HttpStatus.* 
import grails.transaction.Transactional 
import grails.plugin.springsecurity.annotation.Secured 

@Secured(['ROLE_ADMIN']) 
@Transactional 
class MyController { 

    static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"] 

    def springSecurityService 

    def test(){ 



     render "Current User is: [" + springSecurityService.principal + "]" 


    } 

}