2

gecko / firefox XPCOMインターフェースを使用して、ブラウザを閉じずにユーザーのアクティブなセッションを削除または無効にすることは可能ですか?アプリケーションでGeckoEmbedded (具体的にはGeckoFX)を使用していますが、アプリケーションの存続期間中、複数のユーザーがブラウザーコンポーネントを使用する可能性があります。

アプリケーションは、他のさまざまな機能を備えたWebブラウジングをパッケージ化し、Webブラウザーが「閉じられている」場合、アプリは開いたままになります。geckoエンジンに関する限り、プロセスが閉じられていないため、アクティブなセッションはまだアクティブであるようです。たとえば、ユーザーがGmailまたはFacebookにログインしてからブラウザを閉じる場合、ブラウザを再度開いてそれらのページの1つに戻ると、そのユーザーは引き続きログインしていると判断されます。複数のユーザーがアプリケーションを使用できるためアプリケーションが実際に終了しないと、プライバシーの問題が発生します。

ブラウザコントロールのコンストラクタ/disposeメソッド内でNS_InitXPCOM2NS_ShutdownXPCOMを呼び出そうとしましたが、プロセスの存続期間内にNS_ShutdownXPCOMの後にNS_InitXPCOM2を呼び出すことができないため、これは単にクラッシュします。

また、nsISHistoryのPurgeHistoryメソッドとnsICacheServiceのevictEntriesメソッドを使用しました。これらいずれも、プロセスの存続期間内にすぐに影響を与えるようには見えません。

これを実現できるXPCOMインターフェースを知っている人はいますか?または、XPCOMインターフェイスまたはFirefox拡張機能を介した同様の機能へのポインタをいただければ幸いです(ブラウザを再度開かずに現在のブラウジングセッションをクリアできる拡張機能はありますか?またはそれぞれの間で異なるセッションを提供します) Firefoxウィンドウ/タブ?)

プログラムはC#で記述されていますが、どの言語での回答も歓迎します。

どうもありがとう

4

1 に答える 1

4

私はついにこれを可能にするように見えるインターフェースを見つけました:nsICookieManager removeAll()

GeckoFXを使用している人に関連するC#インターフェイス/コード:

[Guid("AAAB6710-0F2C-11d5-A53B-0010A401EB10"),
ComImport,
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface nsICookieManager
{
    void removeAll();
    void remove(string aDomain, string aName, string aPath, bool aBlocked);
}

そしてXpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1").removeAll();適切な場所に。

于 2010-02-22T02:49:02.650 に答える