有没有简单且行数较少的代码来检查通行证和用户并检查其是否匹配

问题描述 投票:0回答:1

我想检查用户和通行证是否匹配以及它们的索引,因为我使用对象数组,我使用 localstorage 和 javascript 进行此活动

//find user if exist
    var founduser = accounts.find(e =>{
        return e.user === user
    })

    //find pass if exist
    var foundpass = accounts.find(e =>{
        return e.pass === pass
    })

    //find index of user
    var indexofuser = accounts.indexOf(founduser)

    //find index of pass
    var indexofpass = accounts.indexOf(foundpass)

    //check if either 2 of them is undefined
    if( foundpass != undefined || founduser != undefined){

        //check if the index are matched
        if( indexofuser === indexofpass){
            alert("logged in successfully")
        }
        //return an alert if its not matched
        else{
            alert("Wrong Password Please try again")
        }
    }

    //return an alert if on of it is undefined
    else{
        alert("Wrong Password Please try again")
    }
javascript arrays find
1个回答
0
投票

您可以使用

.find()
,但只有当帐户的
user
pass
属性都匹配时,回调函数才返回 true:

const foundUser = accounts.find(e =>{
  return e.user === user && e.pass === pass;
});

if (foundUser) {
  alert("logged in successfully")
} else {
  alert("Wrong Password Please try again")
}

这应该为您提供与现有代码相同的行为,因为您在两个

else
块中记录相同的内容。但是,请务必考虑以下一些安全隐患:

  • 让最终用户知道密码不正确(这通常意味着用户名是正确的,尽管在您的代码中并非如此,因为您在两种情况下都显示了错误的密码)
  • 执行
    .find()
    可能会让您面临定时攻击,让用户猜测用户名/密码是什么
  • 您如何存储您的用户帐户和密码。确保只有后端有权访问用户帐户信息,例如哈希+加盐密码和用户名。不要将敏感帐户信息存储在本地存储中(因为常规 JavaScript 代码可以轻松访问此信息)。
© www.soinside.com 2019 - 2024. All rights reserved.