Schutz vor stillen Seiten-Reloads: 12h-Session, eigener Session-Cookie, Meldung statt Sofort-Reload
Session-Timeout auf 12 h erhöht, Cookie-Name PDFTOOL_SESSION gegen JSESSIONID-Kollisionen anderer lokaler Java-Anwendungen, Tomcat-POST-Limit auf 30 MB für Canvas-Daten mit eingebetteten Bildern, Vaadin-Systemmeldungen mit Bestätigung statt sofortigem Neuladen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package de.assecutor.pdftool.ui;
|
||||
|
||||
import com.vaadin.flow.server.CustomizedSystemMessages;
|
||||
import com.vaadin.flow.server.ServiceInitEvent;
|
||||
import com.vaadin.flow.server.VaadinServiceInitListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* Verhindert das stille Neuladen der Seite durch Vaadin: Standardmäßig lädt
|
||||
* Vaadin bei abgelaufener Session (z. B. nach einem Neustart der Anwendung)
|
||||
* oder internen Fehlern die Seite sofort und ohne Hinweis neu — mitten in der
|
||||
* Arbeit im Rechnungsgenerator. Stattdessen wird jetzt eine Meldung angezeigt;
|
||||
* die Seite lädt erst neu, wenn der Benutzer die Meldung bestätigt.
|
||||
*/
|
||||
@Component
|
||||
public class SystemMessagesConfiguration implements VaadinServiceInitListener {
|
||||
|
||||
@Override
|
||||
public void serviceInit(ServiceInitEvent event) {
|
||||
event.getSource().setSystemMessagesProvider(info -> {
|
||||
CustomizedSystemMessages messages = new CustomizedSystemMessages();
|
||||
|
||||
messages.setSessionExpiredNotificationEnabled(true);
|
||||
messages.setSessionExpiredCaption("Sitzung abgelaufen");
|
||||
messages.setSessionExpiredMessage("Die Sitzung ist abgelaufen, z. B. durch einen Neustart der "
|
||||
+ "Anwendung. Zum Fortfahren klicken — nicht gespeicherte Änderungen im "
|
||||
+ "Rechnungsgenerator werden wiederhergestellt.");
|
||||
|
||||
messages.setInternalErrorNotificationEnabled(true);
|
||||
messages.setInternalErrorCaption("Interner Fehler");
|
||||
messages.setInternalErrorMessage("Es ist ein interner Fehler aufgetreten. "
|
||||
+ "Zum Fortfahren klicken; die Seite wird danach neu geladen.");
|
||||
|
||||
return messages;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,29 @@
|
||||
spring.application.name=pdf-tool
|
||||
server.port=${SERVER_PORT:8083}
|
||||
|
||||
# Session erst nach 12 h Inaktivität verwerfen: Der Standard von 30 Minuten
|
||||
# führte dazu, dass Vaadin nach längerer Untätigkeit (Tab inaktiv, Standby)
|
||||
# die Seite neu lädt und ungespeicherte Canvas-Änderungen verloren gehen.
|
||||
server.servlet.session.timeout=12h
|
||||
|
||||
# Eigener Name für den Session-Cookie: Der Standardname JSESSIONID gilt pro
|
||||
# Hostname (nicht pro Port). Andere lokal laufende Java-Anwendungen auf
|
||||
# demselben Rechner überschreiben sich sonst gegenseitig den Cookie, und die
|
||||
# Session des PDF-Tools ist scheinbar sofort "abgelaufen".
|
||||
server.servlet.session.cookie.name=PDFTOOL_SESSION
|
||||
|
||||
# Wird beim Build durch die Version aus der pom.xml ersetzt (Resource-Filtering)
|
||||
pdftool.version=@project.version@
|
||||
|
||||
spring.servlet.multipart.max-file-size=25MB
|
||||
spring.servlet.multipart.max-request-size=30MB
|
||||
|
||||
# Auch normale (Nicht-Multipart-)Requests bis 30 MB zulassen: Canvas-Daten mit
|
||||
# eingebetteten Bild-Elementen können das Tomcat-Standardlimit von 2 MB
|
||||
# überschreiten; ein abgelehnter Request führt im Browser sonst zu einem
|
||||
# Vaadin-Kommunikationsfehler mit anschließendem Seiten-Reload.
|
||||
server.tomcat.max-http-form-post-size=30MB
|
||||
|
||||
vaadin.launch-browser=false
|
||||
|
||||
# Zugangsdaten aus der .env-Datei im Projektverzeichnis laden (falls vorhanden)
|
||||
|
||||
Reference in New Issue
Block a user