Ich habe Probleme beim Löschen eines Cookies, das von einer Ktor 0.9.0 serverseitigen Anwendung gesetzt wurde. Vielleicht weiß ich nicht, wie ich es richtig machen soll, oder es gibt eine Lücke im Ktor-Framework.Cookie-Lebenszyklus in Ktor 0.9.0 Servlet steuern
Cookie erstellen und löschen ist nicht das Problem per se, aber um ein Cookie zu löschen, muss ich den gleichen Pfad verwenden, der mit dem Cookie auf dem Client-Browser gespeichert ist. Ktor lass mich den Weg mit der Cookie-Erstellung steuern. Hier ist meine Konfiguration:
install(Sessions) {
cookie<MySession>(sessionMarker) {
cookie.duration = cookieDuration
cookie.path = "/myWebapp"
transform(SessionTransportTransformerMessageAuthentication(sessionKey))
}
}
auf der Anmeldeseite /myWebapp/page/login
schaffe ich das Cookie, das dann an den Client gesendet wird, und es bewegt sich hin und her für den Rest der Anforderungen an die Web-Anwendung gesendet:
call.sessions.set(MySession([some data class arguments]))
Der Cookie zeigt den Pfad /myWebapp
bei der Überprüfung auf dem Client. Der Standardwert wäre /myWebapp/page
, da dies der Pfad der Anmeldeseite ist, der Pfad jedoch aus der oben gezeigten Cookie-Konfiguration stammt. Bis jetzt ist alles gut.
Schließlich wird der Benutzer möchte über eine POST-Anforderung an die Login-Seite, um sich abzumelden:
call.sessions.clear<MySession>()
Das hier Problem ist, dass ich keine Möglichkeit der Kontrolle der Cookie-Pfad gefunden haben. Da die Anmeldeseite /myWebapp/page/login
das abgelaufene Cookie für einen anderen Pfad an den Client zurücksendet (eigene /myWebapp/page
), wird das ursprüngliche Cookie nicht gelöscht (/myWebapp/page
! = /myWebapp
).
Wie kann ich den Pfad des Cookies in Ktor 0.9.0 kontrollieren, wenn ich versuche, ihn zu löschen?
Ich weiß, wie man es umgehen kann: durch Erstellen des Cookies mit dem gleichen Pfad von wo ich es löschen werde. Aber das ist nicht, was ich will (es gibt andere Wege innerhalb der Web-Anwendungen wie /myWebapp/others
waren die Cookies sollten verwendet werden). Die Möglichkeit, den Pfad des Cookies während der Erstellung zu kontrollieren, macht keinen Sinn.