我正在开发一个使用cefsharp浏览器作为其一部分的银行设备上的应用程序.因为这个应用程序将被任何人使用,它不应该保存下一个用户可以看到的来自先前用户的任何数据.我想在关闭后清除所有缓存的浏览器数据.
public void InitBrowser()
{
settings = new CefSettings();
settings.CachePath = AppDomain.CurrentDomain.BaseDirectory + "cache";
settings.CefCommandLineArgs.Add("disable-application-cache", "1");
settings.CefCommandLineArgs.Add("disable-session-storage", "1");
if (!Cef.IsInitialized) Cef.Initialize(settings);
webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
MainGrid.Children.Add(webBrowser);
}
Run Code Online (Sandbox Code Playgroud)
我想在WebPages_Exit调用一个名为的函数后清除所有缓存的数据 .如何在不删除浏览器实例或关闭CEF的情况下删除所有缓存数据,导致CEF无法初始化两次,并且在处理后无法创建另一个浏览器实例.
我实现了visit函数ICookieVisitor以保存cookie以及使用类似deleteCookies或禁用缓存cefSetting命令的方法,但没有任何作用导致cookie列表为空并且从不调用visit函数IcookieVisitor.它似乎保存在另一个部分,只是在CEF关闭时重置.
我有一个示例代码,它使用 PEM 私钥加密消息并使用 PEM 公钥解密它,但最后解密结果为空。
const char * msg = "this is a test message";
//********************Encrypt*******************************
if ((pFile = fopen("private.pem", "rt")) &&
(rsa = PEM_read_RSAPrivateKey(pFile, NULL, passwd_callback, (void*)pcszPassphrase)))
{
fprintf(stderr, "Private key read.\n");
RSA_private_encrypt(strlen(msg), (unsigned char *)msg, encrypted, rsa, RSA_PKCS1_PADDING);
fclose(pFile);
}
//********************Decrypt*******************************
pFile = fopen("pubkey.pem", "rt");
if (rsa = PEM_read_RSAPublicKey(pFile, NULL, NULL, NULL))
{
RSA_public_decrypt(strlen((char *)encrypted), encrypted, decrypted, rsa, RSA_PKCS1_PADDING);
ERR_load_crypto_strings();
char * err = (char *)malloc(130);
ERR_error_string(ERR_get_error(), err);
fprintf(stderr, "Error decrypting message: %s\n", err);
}
Run Code Online (Sandbox Code Playgroud)
结果 RSA_public_decrypt 的输出为 …