2011-11-16 3 views
1

우리는 grails에서 프로젝트를 개발 중입니다. 그리고 우리는 웹 사이트에 접속하는 국가의 데이터를 사용자에게 보여주고 자합니다. 나는 국가 위치를 저장하는 필드가 있습니다. geoip grails plugin을 사용합니다.Grails geo - location initializer

제 질문은 어떤 컨트롤러/액션에 부딪히기 전에 사이트가 초과되는 국가 이름으로 세션을 초기화 할 수 있습니까? 아니면 일부 구성 파일이나 다른 곳에서 말할 수 있습니다.

답변

3

Filter에서 할 수 있습니다. GeoFilters.groovygrails-app/conf에 배치 이런 식으로 뭔가 :

class GeoFilters { 
    def geoIpService 

    def filters = { 
    countryCheck(controller:'*', action:'*') { 
     before = { 
     if(!session.geolocation) { 
      session.geolocation = geoIpService.getLocation(request.remoteAddr) 
     } 
     } 
    } 
    } 
} 

geolocation 세션에 존재하는지 확인 (그래도 난 그것을 시도하지 않은)해야하고, 그렇지 않은 경우는에서 페치한다 geoIpService.

+0

안녕하세요, 빠른 답장을 보내 주셔서 감사합니다 :)이 필터는 전쟁이 배포 될 서버의 IP와 세션을 초기화 할 것입니다. 우리 사이트에 액세스하려는 사용자에 따라 세션을 다시 초기화합니까? – lucky

+0

request.remoteAddr이 서버의 IP라고 생각하지 않습니다 ... – Philippe

+0

@lucky Phillipe가 맞습니다. 'request.remoteAddr'는 'String'으로 클라이언트의 IP 주소 ... –