在我的Grails应用程序中的一个控制器中,我在会话变量中保留一个参数值,如下所示:
session.myVariable = params.myValue
之后,只要我主动使用该应用程序,我就可以从不同的控制器/ GSP页面访问保存的值。但是,如果我暂时不使用我的应用程序,即使我的浏览器窗口仍处于打开状态,会话变量也会失去它的值。
这是否因为会话到期而发生?我的印象是会话一直存在,直到浏览器窗口仍然打开,但显然我错了。
我应该怎样做才能确保我在Grails应用中定义的所有会话变量在浏览器关闭之前不会过期?有没有办法手动设置会话超时?
提前感谢您的回答!
答案 0 :(得分:82)
另一种选择是修改web.xml。之前你必须致电
grails install-templates
然后编辑src / templates / war / web.xml并在servlet-mapping之后添加/修改:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
session-timeout的值使用分钟作为单位。
答案 1 :(得分:33)
快进几年......对于Grails 3.0,在应用程序配置文件中使用ServerProperties设置会话超时。
<强>的grails-app / CONF / application.yml 强>
server:
session:
timeout: 3600 #seconds
默认值: 1800 秒(30分钟)
使用控制器验证HttpSession的超时
getMaxInactiveInterval()
:
log.println "Timeout: ${session.getMaxInactiveInterval()} seconds"
输出 - &gt;的 Timeout: 3600 seconds
强>
更新:为Grails 3.1
中的更改编辑了配置答案 2 :(得分:6)
当前的grails(2.x)有一种非常奇怪的设计方法来设置会话超时。没有一个流行的想法是伟大的:
在WebxmlGrails插件中注释掉“// session Timeout”部分,并将“sessionConfig.sessionTimeout =”添加到Config.groovy
grails install-templates,从web.xml中删除session-timeout,在WebXmlConfig.groovy中添加超时
等待修复。 :/
一位同事想出了以下适用于我的代码,直到将一个真正的解决方案构建到grails核心中。
只需将以下内容添加到config.groovy文件的底部,然后设置适当的超时。
grails.war.resources = { stagingDir, args ->
def webXML = new java.io.File("${stagingDir}/WEB-INF/web.xml")
webXML.text = webXML.text.replaceFirst("<session-timeout>30</session-timeout>", "<session-timeout>90</session-timeout>")
}
我建议正确的解决方案是在Config.groovy文件中允许一行:
session.timeout = 90;
干杯。
答案 3 :(得分:2)
使用Grails 3.1.x会话超时已弃用。 application.yml 中的正确属性是:
server:
session.timeout: 7200
答案 4 :(得分:1)
我可能错了,但我非常确定Grails使用与您的应用程序容器关联的会话。例如,如果您正在使用Tomcat,则可以指定会话的长度。
答案 5 :(得分:1)
这是一个更好的工作解决方案。去你的grails主目录,找到 示例:E:\ grails-2.3.8 \ src \ war \ WEB-INF \ web3.0.template.xml将会话超时值编辑为所需的值:
实施例:
enter code here
90
答案 6 :(得分:0)
对于Grails 3应用程序,修改spend_sw['Maint Start Date'] = spend_sw[spend_sw['Maint Start Date'] == '02/29/2008'].apply(lambda x: pd.datetime(x['Maint Start Date'].year , x['Maint Start Date'].month, x['Maint Start Date'].day - 1), axis=1)
为我工作:
Application.groovy