如何将原始密码存储到本地存储中?
我有两个输入用户名和密码:
<input id="myInput" type="text" name="myInput" placeholder="Input">
<input id="myPW" type="password" name="myPassword" placeholder="Password">
我要在JavaScript中进行的操作是存储用户名,转换为Base64的密码以及密码的原始数据。但是它仅存储用户名和Base64密码。原始密码不会存储。我该如何解决?
答案 0 :(得分:2)
因为将inpw.value
设置为空字符串,然后再使用它来推送原始密码。
userArray.push(inp.value);
localStorage.setItem('user', JSON.stringify(userArray));
inp.value = "";
passArray.push(window.btoa(inpw.value));
localStorage.setItem('pass', JSON.stringify(passArray));
inpw.value = ""; // This makes next inpw.value equals ""
origPassArray.push(inpw.value); // So this will push an empty string to the array
localStorage.setItem('orig', JSON.stringify(origPassArray));
inpw.value = "";
答案 1 :(得分:1)
在for loops
行之后,您的输入是空的。此外,请勿重复自己的操作。我做了一些重构。您应该编写函数来获取本地存储区的凭据,例如
inpw.value = "";
还要编写一些函数来将凭据设置为localstore之类的
const storedValue = ['user', 'pass', 'origin']
const credential = getCredentialFromStore(storedValue)
const getCredentialFromStore = (storedValue) => {
const result = []
storedValue.forEach(item => {
result[item] = localStorage.getItem(item) ? JSON.parse(localStorage.getItem(item)) : [];
})
return result
}
使用:
const addToCredential = (credential, key, value) => {
credential[key].push(value);
localStorage.setItem(key, JSON.stringify(credential[key]));
return credential
}