8 grails
我们在Grails 2.0中有一个应用程序,当我们运行时,我们已经工作了localhost:8080.在Config.groovy,应用程序具有grails.serverURL必须为当前主机和当前应用程序名称设置的属性.但是,在我们的QA环境中,中间件团队接受我们给他们的战争并将其部署到服务器,该服务器的名称和端口我们不知道提前.
似乎Grails假设您总是要注册一个域名,然后完全控制该名称和应用程序运行的端口,但事实并非如此.
解决这个问题的最佳方法是什么?我们尝试过简单删除grails.serverURL,但Spring Security似乎使用它来建立登录成功和注销成功时重定向的URL.
development { grails.serverURL = "http://www.notused.com/${appName}" }
production { grails.serverURL = "<we don't know yet>" }
Run Code Online (Sandbox Code Playgroud)
在有人要求之前,我已经阅读了StackOverflow和其他与此问题相关的大量帖子,但没有回答这个具体问题.
不,Spring Security不使用它.删除serverURL属性应该始终是安全的,并让Grails生成相对于当前正在运行的应用程序的URL.
通常,您需要此属性的唯一位置是您生成电子邮件并希望嵌入服务器URL,以便用户可以单击返回您的站点.由于这些通常是异步发送而不是在服务器请求期间发送,因此没有配置选项就无法知道服务器地址.但如果你不这样做,那么省略就可以了.
Grails有一个称为外部化配置的内置机制,允许您Config.groovy在应用程序之外使用一个或多个可选文件.
你添加这样的东西Config.groovy:
grails.config.locations = [
"classpath:${appName}-config.properties",
"classpath:${appName}-config.groovy",
"file:${userHome}/.grails/${appName}-config.properties",
"file:${userHome}/.grails/${appName}-config.groovy" ]
Run Code Online (Sandbox Code Playgroud)
然后在服务器上的任何一个文件中包含以下内容:
grails.serverURL = "http://example.com/"
Run Code Online (Sandbox Code Playgroud)
外部配置将覆盖基本配置.
| 归档时间: |
|
| 查看次数: |
6942 次 |
| 最近记录: |