1

設定

現在、デフォルトのクロム ブラウザの代わりにクロスウォークを Web ビューとして使用するコードバ Android アプリケーションがあります。ログイン時にアプリケーション自体が AuthProvider にアクセスし、AuthProvider から返された Cookie が Android の CookieManager に保存されます。

ドメインによってその認証プロバイダーに固有の Cookie を取得できることを確認しました。

問題

単純なケースとして、Cookie の値に「=」記号が含まれていない場合、すべてが完全に機能します。Cookie を更新したり、無効にしたりすることもできます。ただし、認証プロバイダーが「=」を含む値を持つ Cookie を返す場合 (例: Cookie string = "AuthCookie=a=b=c=d" AuthCookie は Cookie 名で、値は "この場合、「a=b=c=d」は、エンコードされていない場合は無効な Cookie 値です。その結果、CookieManager のメソッド (setCookie) が機能しません。方法はありません。その Cookie を更新または無効にすることさえできます。

興味深いのは、cookieManger では「a=b=c=d」という値で Cookie を設定することさえできないことです。問題は、認証プロバイダーからの応答から Cookie を解釈し、データ ストアを更新するブラウザーによって Cookie の値が設定されていると私が信じていることです。ただし、Cookie の値をエンコードすることはないと思います。

ゴール

本当の目標は、AuthProvider Browser 経由で保存されている特定の Cookie を無効にできるようにすることです。

cookieManager に提供される関数

setCookie(< ドメイン>, < cookiestring>);

関数自体が Cookie 名と値を含む Cookie 文字列を取得するという問題。Cookie の値をエンコードするだけです。唯一の問題は、AuthProvider が Cookie ストアに Cookie を設定する方法に問題があることです。

cookieManager の set メソッドをオーバーライドする必要がありますか? 「;」に基づいてすべての Cookie を解析します。次に、最初の「=」記号のすべての Cookie を解析し、右側のすべてをエンコードしますか?

また、認証プロバイダーの応答を保存しているブラウザーによって cookieManager:setCookie() が呼び出されたかどうかもわかりません。setCookie(domain,"auth=a=b=c=d") が機能しないため、これが当てはまるとは思いません。少なくとも XWalkCookieManager では

または、「auth=a=b=c=d」である Cookiestring を更新または無効にする別の方法があります。「setCookie(domain, "auth=super") を試してみると、例外はスローされません。次に getCookie(domain) を呼び出すと、null が返されます。XWalkCookieManager 内で UnsupportedOperationException がスローされ、結果として null が返されます。のソースがないため、unsupportedOperationException がスローされる理由を詳しく調べることはできません。

この問題の解決方法または回避策について何かアドバイスはありますか? ありがとう、デレク

4

1 に答える 1