Session 如何像真正的浏览器一样在关闭选项卡时清除当前网页

Session 如何像真正的浏览器一样在关闭选项卡时清除当前网页,session,cefsharp,Session,Cefsharp,我有一个网站,用户可以登录那里访问他们的个人资料。 在谷歌浏览器或其他网络浏览器中,我可以打开网站并登录。 要注销网站,请向我的web api发送请求。 在关闭选项卡而不注销后,我在新选项卡中加载我的站点,它要求我登录。 这是一种良好的行为 但是当我在CefSharp Chromium Browswer(CefSharp.WinForms 79.1.360)中打开此站点时,我无法自动注销用户。 我使用下一种方法清除所有数据,然后加载起始页: await Cef.GetGlobalCookieMa

我有一个网站,用户可以登录那里访问他们的个人资料。 在谷歌浏览器或其他网络浏览器中,我可以打开网站并登录。 要注销网站,请向我的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),但也不起作用

此方法适用于许多使用cookies存储登录用户的站点。在我清除cookies后,它们会自动注销。但对于这个网站来说,它不起作用。本网站不使用cookies存储登录信息,注销是通过其web api执行的。这个网站实际上不是我的,我也没有源代码


我是否可以让CefSharp在浏览器中清除会话,就像普通google chrome在关闭选项卡时所做的那样?

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

它们只做简单的工作:

localStorage.clear();
sessionStorage.clear();
问题是用户“记录的信息”存储在sessionStorage中,并且没有通过调用清除

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

你用的是什么版本?由于您没有提供示例url,您需要提供有关您的网站的详细信息,它是否使用cookies作为会话状态?当你在chrome中关闭一个标签时会发生什么?您应该等待DeleteCookiesAsync确认它实际上已完成,并且删除了Cookie的数量。您正在指定自己的RequestContext吗?你在使用什么设置?@amaitland我已经更新了原始帖子。版本是CefSharp.WinForms 79.1.360,我使用wait。我已经添加了我的设置。站点似乎没有使用cookies来存储会话状态。我没有指定自己的RequestContext,但我有自己的处理程序(更新了原始帖子),那么网站是如何工作的呢?铬会发生什么?您可以使用单独的RequestContext隔离浏览器实例,请参见@amaitland,我尝试使用RequestContext,但它没有任何作用,因为我只有一个CEF浏览器。在GoogleChrome注销中,站点从后端调用http方法进行注销。我可以关闭chrome选项卡,并在新选项卡中注销。CEF支持几个选项卡吗?我还没有找到任何API,那么您的http方法是如何调用的呢?什么触发了呼叫?没有
选项卡
api,因为您必须创建自己的选项卡,请为每个选项卡使用新的
ChromiumWebBrowser