2014-01-22 3 views
0

컨트롤러에이 코드가 있습니다. def user = springSecurityService.principal. 문제는봄 보안이 적용된 Null 속성

class adminController{ 
    def springSecurityService 

    def adminController(){ 
     def user = springSecurityService.principal 
     [user:user] <-----this 
    } 

} 

이 어떻게 다른 작업에 user 사용할 수 있도록 할 다음과 같이 사용하면, 다른 컨트롤러, 그것은 null을 반환 사용자를 찾을 수 없습니다 것입니다? 다음과 같이 각 개별 작업 아래에있는 경우 작동합니다.

class adminController{ 
    def springSecurityService 

    def methodA(){ 
     def user = springSecurityService.principal 
     [user:user] 
     } 

    def methodB(){ 
     def user = springSecurityService.principal 
     [user:user] 
     } 
    } 
    ..... and so on 
} 

그러나 반복적이며 나쁨입니다. 이 def user = springSecurityService.principal을 사용하여 속성을 가져 와서 gsp 템플릿에있는 내 머리글에 표시하고 있습니다.

+0

use springSecurityService.currentUser –

답변

1

gsp 템플릿에 사용자 속성을 표시하려면 사용자 정의 taglib를 만들 수 있습니다. 다음은 taglib를 사용하여 사용자의 전체 이름을 표시하는 방법의 예입니다.

class SimpleTagLib { 
    def springSecurityService 
    static namespace = "ns" 

    def userFullName = { 
     User currentUser = springSecurityService.currentUser as User 
     if (currentUser) { 
      out << currentUser.firstName + " " + currentUser.lastName 
     } 
    }  
} 

와 GSP 템플릿에 당신은이

....... 
<ns:userFullName/> 
...... 

P.S. 같은 태그를 추가해야 당신은 disiplaying 사용자 이메일, 사용자 이름 등에 대한 다른 taglibs를 만들 수 있습니다.

+0

이 정보는 매우 유용합니다. 나는 지금까지 custom tagLibs에 대해 몰랐다. – Jan

관련 문제