Jak skonfigurować limit czasu sesji dla aplikacji Grails?
W Jednym ze sterowników w mojej aplikacji Grails zachowuję wartość parametru w zmiennej sesyjnej takiej jak Ta:
session.myVariable = params.myValue
Następnie mogę uzyskać dostęp do zapisanej wartości z różnych kontrolerów / stron GSP, o ile aktywnie korzystam z aplikacji. Jeśli jednak nie używam aplikacji przez jakiś czas, mimo że moje okno przeglądarki jest nadal otwarte, zmienna sesji traci swoją wartość.
Czy dzieje się tak, ponieważ sesja wygasa? Miałem wrażenie, że sesja trwa do okno przeglądarki jest nadal otwarte, ale najwyraźniej się myliłem.
Co zrobić, aby wszystkie zmienne sesji zdefiniowane w aplikacji Grails nie wygasły, dopóki przeglądarka nie zostanie zamknięta? Czy istnieje sposób ręcznego ustawienia limitu czasu sesji?
Z góry dziękuję za odpowiedzi!
7 answers
Inną opcją byłoby zmodyfikowanie www.xml. Przed musisz zadzwonić
grails install-templates
Następnie Edytuj src / templates/war / web.xml i dodaj/zmodyfikuj po mapowaniu servleta:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
Wartość session-timeout używa minut jako jednostki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-25 20:12:48
Przewiń do przodu o kilka lat... Dla Grails 3.0 ustaw limit czasu sesji za pomocą ServerProperties w pliku konfiguracyjnym aplikacji.
Grails-app / conf / application.yml
server:
session:
timeout: 3600 #seconds
Wartość domyślna: 1800 sekund (30 minut)
Sprawdzenie limitu czasu dla HttpSession z kontrolera za pomocą
getMaxInactiveInterval()
:
log.println "Timeout: ${session.getMaxInactiveInterval()} seconds"
Wyjście --> Timeout: 3600 seconds
Aktualizacja: edytowana konfiguracja zmian w Grails 3.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-01 21:53:23
The current grails (2.x) mają bardzo dziwne podejście projektowe do ustawiania limitu czasu sesji. Żaden z panujących pomysłów nie jest wielki:
-
Skomentuj sekcję "/ / session Timeout "wewnątrz wtyczki WebxmlGrails i dodaj" sessionConfig.sessionTimeout= " do Config.groovy
-
Grails install-templates, remove session-timeout from web.xml, dodaj timeout w WebXmlConfig.groovy
Poczekaj na naprawę. :/
Współpracownik wymyślił po kod, który działa dobrze dla mnie i będzie zrobić, aż prawdziwe rozwiązanie jest wbudowany w Grails core.
Po prostu dodaj następujące elementy na dole konfiguracji.groovy pliku, a następnie ustawić odpowiedni timeout.
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>")
}
Sugeruję, że poprawnym rozwiązaniem jest dopuszczenie pojedynczej linii w konfiguracji.plik groovy:
session.timeout = 90;
Zdrówko.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 22:41:43
Z Grails 3.1.X session-timeout jest przestarzały. Poprawną właściwość w aplikacji .yml to:
server:
session.timeout: 7200
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 15:15:54
Mogę się mylić, ale jestem prawie pewien, że Grails używa sesji związanych z Twoim kontenerem aplikacji. Na przykład, jeśli używasz programu Tomcat, możesz określić długość sesji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-25 18:49:23
Oto lepsze rozwiązanie. idź do katalogu domowego grails i znajdź Przykład: E:\grails-2.3.8\src\war\WEB-INF\web3.0.szablon.xml edytuje wartość czasu sesji do żądanych wartości:
Przykład:
enter code here
90
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-13 06:49:07
Dla aplikacji Grails 3, modyfikacja Application.groovy
zadziałała dla mnie:
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
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-02 14:25:25