Grails 애플리케이션의 세션 시간 제한을 구성하는 방법은 무엇입니까?
내 Grails 애플리케이션의 컨트롤러 중 하나에서 다음과 같이 세션 변수에 매개 변수 값을 보존하고 있습니다.
session.myVariable = params.myValue
그 후 앱을 적극적으로 사용하는 한 다른 컨트롤러 / GSP 페이지에서 저장된 값에 액세스 할 수 있습니다. 그러나 잠시 동안 내 앱을 사용하지 않으면 브라우저 창이 여전히 열려 있어도 세션 변수가 값을 잃어 버립니다.
세션이 만료되어 발생합니까? 나는 브라우저 창이 열릴 때까지 세션이 계속된다는 인상을 받았지만 분명히 내가 틀렸다.
Grails 앱에서 정의한 모든 세션 변수가 브라우저를 닫을 때까지 만료되지 않도록하려면 어떻게해야합니까? 세션 시간 초과를 수동으로 설정하는 방법이 있습니까?
귀하의 답변에 미리 감사드립니다!
또 다른 옵션은 web.xml을 수정하는 것입니다. 전화하기 전에
grails install-templates
그런 다음 src / templates / war / web.xml을 편집하고 servlet-mapping 후 추가 / 수정합니다.
<session-config>
<session-timeout>60</session-timeout>
</session-config>
session-timeout 값은 분을 단위로 사용합니다.
몇 년 빨리 감기 ... Grails 3.0의 경우 애플리케이션 구성 파일에서 ServerProperties 로 세션 시간 제한을 설정했습니다 .
grails-app / conf / application.yml
server:
session:
timeout: 3600 #seconds
기본값 : 1800 초 (30 분)
다음을 사용하여 컨트롤러 에서 HttpSession에 대한 시간 초과를 확인합니다 getMaxInactiveInterval()
.
log.println "Timeout: ${session.getMaxInactiveInterval()} seconds"
출력-> Timeout: 3600 seconds
업데이트 : Grails 3.1의 변경 사항에 대한 구성 편집
현재 grails (2.x)는 세션 시간 제한을 설정하는 매우 이상한 디자인 접근 방식을 가지고 있습니다. 일반적인 아이디어 중 어느 것도 훌륭하지 않습니다.
WebxmlGrails 플러그인 내에서 "// session Timeout"섹션을 주석 처리하고 Config.groovy에 "sessionConfig.sessionTimeout ="을 추가하십시오.
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;
건배.
Grails 3.1.x에서는 세션 시간 제한이 더 이상 사용되지 않습니다. application.yml 의 올바른 속성 은 다음과 같습니다.
server:
session.timeout: 7200
내가 틀렸을 수도 있지만 Grails가 애플리케이션 컨테이너와 관련된 세션을 사용한다고 확신합니다. 예를 들어 Tomcat을 사용하는 경우 세션 길이를 지정할 수 있습니다.
여기에 더 나은 작업 솔루션이 있습니다. grails 홈 디렉토리로 이동하여 예를 찾으십시오. E : \ grails-2.3.8 \ src \ war \ WEB-INF \ web3.0.template.xml 세션 시간 초과 값을 원하는 값으로 편집하십시오.
예 : enter code here
90
Grails 3 애플리케이션의 경우 Application.groovy
나를 위해 일한 수정 :
package foo
import grails.boot.GrailsApp
import grails.boot.config.GrailsAutoConfiguration
import org.apache.catalina.Context
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory
import org.springframework.boot.context.embedded.tomcat.TomcatContextCustomizer
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory
import org.springframework.context.annotation.Bean
class Application extends GrailsAutoConfiguration {
static void main(String[] args) {
GrailsApp.run(Application, args)
}
@Bean
EmbeddedServletContainerFactory containerFactory() {
TomcatEmbeddedServletContainerFactory containerFactory = new TomcatEmbeddedServletContainerFactory()
containerFactory.addContextCustomizers(new TomcatContextCustomizer() {
@Override
void customize(Context context) {
int oneWeekInMinute = 7 * 24 * 60
context.setSessionTimeout(oneWeekInMinute)
}
});
return containerFactory
}
}
'developer tip' 카테고리의 다른 글
$ {var} 매개 변수 확장 표현식이 bash에 중첩 될 수 있습니까? (0) | 2020.12.15 |
---|---|
파이썬 문자열에서 빈 줄을 제거하는 빠른 한 줄은 무엇입니까? (0) | 2020.12.15 |
문자열의 첫 번째 문자를 축소하는 방법은 무엇입니까? (0) | 2020.12.15 |
BackgroundWorker를 올바르게 중지하는 방법 (0) | 2020.12.15 |
후행 0 유지 (0) | 2020.12.15 |