我有一个网站,用户可以登录该网站以访问其个人资料。在谷歌浏览器或其他网络浏览器中,我可以打开该网站并登录。要注销,网站将请求发送到我的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清除浏览器中的会话吗?
通过按网站标题上的按钮注销用户,并且向服务器发送了http请求以注销用户。我可以通过Browser.GetMainFrame().ExecuteJavaScriptAsync(JsMethods.GetClearSessionMethod())
这只是完成简单的工作:
localStorage.clear();
sessionStorage.clear();
问题是用户“记录的信息”存储在sessionStorage中,并且没有通过调用清除]
await Cef.GetGlobalCookieManager().DeleteCookiesAsync(string.Empty, string.Empty);