我正在建立一个quizz应用程序,它要求我:添加用户身份验证:允许用户登录,并将他们的登录凭据保存到本地存储(HTML5浏览器存储)。我要添加的是检查用户名和&&密码(一起,因为你可以使用相同的用户名而不是相同的密码,反之亦然),所以我可以提示“欢迎回来(用户名)”。 我花了3天试图找出哪些逻辑工作,尝试了所有的东西,但每当我遇到逻辑问题时,事情就不应该如此,这就是代码:
var usersinfo = {
users : []
}
localStorage.setItem("users", JSON.stringify(usersinfo.users))
function registerInfo(){
var name = document.forms[0].username.value;
var pw = document.forms[0].pw.value;
if (name === "" || pw === "") {
alert ('please complete all the forms')
} else {
var adding = JSON.parse(localStorage.getItem("users"));
// logic that goes here : i tried everything , looping...etc
}
return false;
}
请注意,该函数附加到一个按钮,一切都可以在HTML上正常工作,问题在于登录逻辑。
答案 0 :(得分:0)
未经测试,但尝试这样的事情:
const users = JSON.parse(localStorage.getItem("users"));
if (users.some((user) => {
return user.name === document.forms[0].username.value;
})) {
alert('Welcome back!');
}
基本上,我们在数组上使用some
进行循环,并确定是否有任何元素与表单中的元素具有相同的名称。如果他们这样做,我们会立即停止循环并返回true
。如果没有,我们会返回false
。
另请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
并且,确实采取@ AnilRedshift的建议,不要将用户名/密码存储在localstorage中......