CefSharp如何像关闭标签页时的真实浏览器一样清除当前网页

问题描述 投票:-1回答:1

我有一个网站,用户可以登录该网站以访问其个人资料。在谷歌浏览器或其他网络浏览器中,我可以打开该网站并登录。要注销,网站将请求发送到我的Web API。关闭选项卡但未注销后,我将网站加载到新选项卡中,并要求我登录。这是一个很好的行为。

但是当我在CefSharp Chromium Browswer(CefSharp.WinForms 79.1.360)中打开此站点时,我无法自动注销用户。我使用下一种方法清除所有数据,然后加载开始页面:

await Cef.GetGlobalCookieManager().DeleteCookiesAsync(string.Empty, string.Empty);

我的设置是:

Cef.EnableHighDPISupport();
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
CefSharpSettings.WcfEnabled = true;

var settings = new CefSettings();
settings.CefCommandLineArgs.Remove("disable-gpu-compositing");
Cef.Initialize(settings);

我使用下一个处理程序:

Browser = new ChromiumWebBrowser(ConfigProvider.HomeUrl)
{
   KeyboardHandler = new KeyboardHandler(),
   RequestHandler = new RequestHandler(),
   LifeSpanHandler = new LifeSpanHandler(_popupUrlsWhiteList),
   MenuHandler = new MenuHandler(),
   DownloadHandler = downloadHandler
};

但是该用户尚未注销。我试图将缓存存储在本地文件夹中(使用CefSettings),但是它也没有起作用。

此方法适用于许多使用Cookie来存储登录用户的站点。清除Cookie后,它们将自动注销。但是对于此站点,它不起作用。该网站不使用Cookie来存储日志信息,而是通过其Web API执行注销。该站点实际上不是我的站点,我没有源代码。

我可以像关闭普通标签时常规的谷歌浏览器一样让CefSharp清除浏览器中的会话吗?

session cefsharp
1个回答
0
投票

通过按网站标题上的按钮注销用户,并且向服务器发送了http请求以注销用户。我可以通过Browser.GetMainFrame().ExecuteJavaScriptAsync(JsMethods.GetClearSessionMethod())

使用户自动注销

这只是完成简单的工作:

localStorage.clear();
sessionStorage.clear();

问题是用户“记录的信息”存储在sessionStorage中,并且没有通过调用清除]

await Cef.GetGlobalCookieManager().DeleteCookiesAsync(string.Empty, string.Empty);
© www.soinside.com 2019 - 2024. All rights reserved.