Ktor 0.9.0サーバー側アプリケーションで設定されたクッキーの削除に問題があります。たぶん私はそれを正しい方法でやるか、Ktorフレームワークに抜けがあるか分からないかもしれません。Ktor 0.9.0サーブレットでのCookieライフサイクルの制御
クッキーの作成と削除自体は問題ではありませんが、クッキーを削除するには、クライアントブラウザにクッキーと同じパスを使用する必要があります。 Ktorはクッキーの作成を使ってパスを制御できます。ここに私の設定です:
install(Sessions) {
cookie<MySession>(sessionMarker) {
cookie.duration = cookieDuration
cookie.path = "/myWebapp"
transform(SessionTransportTransformerMessageAuthentication(sessionKey))
}
}
ログインページ/myWebapp/page/login
で、私はその後、クライアントに送信されたクッキーを作成し、それをWebアプリケーションに送信される要求の残りの部分を前後に移動:
call.sessions.set(MySession([some data class arguments]))
クッキーは、クライアント上で検査されると、パス/myWebapp
を表示します。デフォルトは/myWebapp/page
です。これはログインページのパスですが、パスは上記のCookie設定から取得されるためです。今まではすべてが順調です。
は、最終的にユーザーがログインページへのPOSTリクエストを経由してログアウトしたい:
call.sessions.clear<MySession>()
ここでの問題は、私はクッキーのパスを制御する方法を見つけていませんでしたということです。ログインページ/myWebapp/page/login
は期限切れのクッキーを別のパス(自分自身の/myWebapp/page
)のためにクライアントに送り返しているため、元のクッキーは削除されません(/myWebapp/page
!= /myWebapp
)。
Ktor 0.9.0でクッキーのパスを削除しようとするとどうすれば制御できますか?
私はそれを回避する方法を知っています:それを削除する場所から同じパスでクッキーを作成します。しかし、それは私が欲しいものではありません(/myWebapp/others
のようなウェブアプリケーション内の他のパスがクッキーを使用する必要があります)。作成中にクッキーのパスを制御する機能を持つことは意味がありません。