我正在创建需要许多localstorage密钥的东西。因此我希望使用Math.floor随机生成用户密钥。
我已使用以下内容保存本地存储密钥
var randomnumber = Math.floor((Math.random()*100000000)+1)
var randomnumberstringify = String(randomnumber)
function savebox(id) {
var answer = document.getElementById('box').value;
document.write(randomnumberstringify);
localStorage.setItem(randomnumberstringify, answer);
}
以下加载密钥
function loadbox() {
if (localStorage.getItem(randomnumberstringify)) {
var answer = localStorage.getItem(randomnumberstringify);
}
else {
var answer = ' ';
}
document.getElementById('box').value = answer;
}
但是你可以看到加载函数使用“randomnumberstringify”。这是另一个随机数
所以基本上你用一个随机数保存并加载另一个随机数(显然不存在)
有没有更好的方法可以使用随机数作为加载密钥并保存密钥?
答案 0 :(得分:0)
如果您的load
和save
来电在同一个浏览器会话中发生,并且您的randomnumberstringify
密钥存在于save
和{{}} { {1}}函数,并且不会再为该范围重新创建,使用这种方法应该没问题。
但是,您尝试做的是使用本地存储作为持久性存储单元,这意味着您希望在不同的页面加载或不同的浏览器会话中访问给定用户的相同数据,在每次加载时,javascript变量空间得到擦除。
如果你的情况是后者,你应该使用哈希函数来生成密钥,并使用依赖于用户的字符串来生成哈希函数,这样你每次都会为同一个用户生成相同的密钥。
例如,假设您在JavaScript环境中定义了sha1哈希函数
load
此密钥生成方法允许您每次为同一用户获取相同的密钥。并且您在设置和获取相关数据方面没有问题。
这里:http://www.webtoolkit.info/javascript-sha1.html你可以找到哈希函数SHA1的javascript实现。