我们正在 grails 中开发我们的项目。我们希望根据用户访问我们网站的国家/地区向用户显示数据。我有一个存储国家/地区位置的字段。通过使用 geoip grails 插件。
我的问题是,我们是否可以在访问任何控制器/操作之前使用站点超出的国家/地区名称来初始化会话,比如说在某个配置文件或其他地方。
您应该可以在Filter中做到这一点。像这样的东西,grails-app/conf
放在GeoFilters.groovy
:
class GeoFilters {
def geoIpService
def filters = {
countryCheck(controller:'*', action:'*') {
before = {
if( !session.geolocation ) {
session.geolocation = geoIpService.getLocation( request.remoteAddr )
}
}
}
}
}
应该(虽然我没有尝试过)检查geolocation
会话中是否存在,如果不存在,它应该从geoIpService
.