2013-12-13 26 views
2

的內部環境變量裏面Config.groovy中的我已經建立了一些環境變量:如何使用的Config.groovy

def appName = grails.util.Metadata.current.getApplicationName() 
def casUrl = "https://login.cas.server/cas" 
environments { 
    development { 
     grails.logging.jul.usebridge = true 
     host.address = "12.34.56.78" 
     host.port = "8080" 
    } 
    test { 
     grails.logging.jul.usebridge = true 
     host.address = "http://staging.server.somewhere.com/" 
     host.port = "" 
    } 
    production { 
     grails.logging.jul.usebridge = false 
     host.address = "http://www.production.com" 
     host.port = "" 
    } 
} 

我試圖使用相同的配置文件(配置中的值。 groovy)像這樣:

grails.plugin.springsecurity.cas.loginUri = '/login' 
grails.plugin.springsecurity.cas.serviceUrl = "${host.address}:${host.port}/${appName}/j_spring_cas_security_check" 
grails.plugin.springsecurity.cas.serverUrlPrefix = '${casUrl}' 
grails.plugin.springsecurity.cas.proxyCallbackUrl = "/secure/receptor" 
grails.plugin.springsecurity.logout.afterLogoutUrl = "${casUrl}/logout?url=${host.address}:${host.port}/${appName}/" 

但是,唯一得到解決的是appName變量,其他的都是空的。這是可以做到的嗎?它看起來像是在這裏使用Grails: Spring Security CAS Working in 2.2.3這篇文章,但我似乎無法讓他們解決。

如果我這樣做

def appName = grails.util.Metadata.current.getApplicationName() 
def casUrl = "https://login.umt.edu/cas" 
host.address = "MyAddress" 
environments { 
... 

的configSlurper解決了中科院的配置裏面host.address,我爲什麼不能訪問enviornment變量?

+0

'config.groovy'文件中存在多少'environments'閉包。它應該只有一個。 – Alidad

回答

0

查看答案here根據基本配置

但是,使用點符號後無法嵌套。換句話說,這是不行的

// Won't work! 
foo.bar { 
    hello = "world" 
    good = "bye" 
} 

因此嘗試使用嵌套這樣

foo { 
    bar { 
    hello = "world" 
    good = "bye" 
    } 
} 
+0

這樣做,變量仍然沒有得到解決。在我的網址中,'%5B%3A%5D%3A%5B%3A%5D%2Fmyapplication%2Fj_spring_cas_security_check' – idonaldson

0

將依賴於host.address和host.port每個環境塊中的屬性:

environments { 
    development { 
     grails.logging.jul.usebridge = true 
     host.address = "12.34.56.78" 
     host.port = "8080" 
     grails.plugin.springsecurity.cas.serviceUrl = "${host.address}:${host.port}/${appName}/j_spring_cas_security_check" 
     grails.plugin.springsecurity.logout.afterLogoutUrl = "${casUrl}/logout?url=${host.address}:${host.port}/${appName}/" 
    } 
    test { 
     grails.logging.jul.usebridge = true 
     host.address = "http://staging.server.somewhere.com/" 
     host.port = "" 
     grails.plugin.springsecurity.cas.serviceUrl = "${host.address}:${host.port}/${appName}/j_spring_cas_security_check" 
     grails.plugin.springsecurity.logout.afterLogoutUrl = "${casUrl}/logout?url=${host.address}:${host.port}/${appName}/" 
    } 
    production { 
     grails.logging.jul.usebridge = false 
     host.address = "http://www.production.com" 
     host.port = "" 
     grails.plugin.springsecurity.cas.serviceUrl = "${host.address}:${host.port}/${appName}/j_spring_cas_security_check" 
     grails.plugin.springsecurity.logout.afterLogoutUrl = "${casUrl}/logout?url=${host.address}:${host.port}/${appName}/" 
    } 
} 

可以得到完全擺脫host.address和host.port變量:

environments { 
    development { 
     grails.logging.jul.usebridge = true 
     grails.plugin.springsecurity.cas.serviceUrl = "http://12.34.56.78:8080/${appName}/j_spring_cas_security_check" 
     grails.plugin.springsecurity.logout.afterLogoutUrl = "${casUrl}/logout?url=http://12.34.56.78:8080/${appName}/" 
    } 
    test { 
     grails.logging.jul.usebridge = true 
     grails.plugin.springsecurity.cas.serviceUrl = "http://staging.server.somewhere.com/${appName}/j_spring_cas_security_check" 
     grails.plugin.springsecurity.logout.afterLogoutUrl = "${casUrl}/logout?url=http://staging.server.somewhere.com/${appName}/" 
    } 
    production { 
     grails.logging.jul.usebridge = false 
     grails.plugin.springsecurity.cas.serviceUrl = "http://www.production.com/${appName}/j_spring_cas_security_check" 
     grails.plugin.springsecurity.logout.afterLogoutUrl = "${casUrl}/logout?url=http://www.production.com/${appName}/" 
    } 
} 
相關問題