我正在使用angularJS开发应用程序。我的应用程序需要在本地保存数据。所以,我正在使用HTML5本地存储。
HTML5本地存储的问题是,当用户清除浏览数据时,所有数据都将丢失,我们需要避免这种情况。我意识到,由于数据存储在用户计算机上,因此无法100%保护数据安全。
基本上,有没有办法明确告诉浏览器这些数据是特殊的,当其他网站的数据被清除时不应该清除?这必须是明确鼓励用户不要从该特定站点删除本地数据的方式。或者,或者,我们是否需要合并本地数据库。哪个本地数据库是最佳选择?
答案 0 :(得分:4)
您无法阻止用户从其网络浏览器中删除他们的数据(因为它他们的网络浏览器)。
没有适用该规则的本地数据库。
如果您想防止意外删除数据:将其同步到服务器上的用户帐户。
答案 1 :(得分:1)
据我所知,没有办法阻止用户从浏览器中删除本地数据(在我看来不应该有一个)。
如果您确实希望保留数据,则应将它们与服务器同步。
答案 2 :(得分:0)
如果用户清除所有浏览器数据,则无法保留本地存储。这取决于他们的选择。
在支持webkit的浏览器中存在类似webSQL,indexedDB的存储,但如果他们选择在清除浏览器时删除站点数据,则数据将丢失。
在chorme中的复选框" cookie和网站插件数据"在"清除浏览数据菜单"将决定删除所有网站数据。
谢谢, MG
答案 3 :(得分:0)
我相信你要找的是navigator.storage.persist()。它不会阻止用户删除数据(因为这将是一个主要的安全漏洞),但它实质上会告知浏览器不能删除数据,因为无法从服务器重新获取/重新生成数据。下面的代码片段将完成您在支持浏览器方面所做的工作。
"use strict"; // always put this just once at the start of all javascript files
function persistStorage(thenFunc) {
thenFunc = thenFunc || function(success){
if (!success) console.error("Failed to request persistant storage!");
};
if (
typeof navigator === "object" &&
typeof navigator.storage === "object" &&
typeof navigator.storage.persist === "function"
) {
navigator.storage.persist().then(
thenFunc.bind(0, true),
thenFunc.bind(0, false)
);
} else {
thenFunc(false)
}
}
然后,调用函数persistStorage
,如果成功,可以选择使用传递true
的回调来保存存储。