仅在登录时显示本地存储中的对象



我正在做一个关于创建网站的学校项目。我已经设法在注册帐户时将用户数据保存到本地存储中。当我昨天尝试使用以下代码时,这些代码可以工作:在我以用户身份登录后,密钥"currentUser"将出现在本地存储中。然而,在我清除了本地存储(阵列中的用户太多(并再次运行代码后,currentUser将不再显示在本地存储中。以下是我的代码:从编辑配置文件页面:`

<script>
var currentUser=null;
document.addEventListener("DOMContentLoaded",loadUserData);
function loadUserData() {
currentUser = localStorage.getItem("currentUser");
if(currentUser!=null) {
currentUser = JSON.parse(currentUser);
    }
}
</script>

上面的代码加上登录html中的代码,显示currentUser为本地存储中的密钥(只应在以当前用户身份登录时显示(来自登录页面:

    function checkUser(ev) {
          ev.preventDefault();
          var status=false;
          var username = document.getElementById("username").value;
          var password = document.getElementById("password").value;

          for(var i=0;i<userList.length;i++) {
            var u=userList[i];
            console.log(u.username);
            console.log(u.password);
            if (u.username==username && u.password==password){
            status=true;
            currentUser=userList[i];
            break;
            }
          }
          if (status==true){
            location.href="EditProfile.html";
          }
     }

我问过我的朋友,她说我提到用户名和密码的方式不正确,我需要重写大部分代码?

登录用户时需要存储在localStorage中。当用户注销时,您应该清除localStorage CurrentUser Key

类似这样的东西:

  function checkUser(ev) {
      ev.preventDefault();
      var status=false;
      var username = document.getElementById("username").value;
      var password = document.getElementById("password").value;

      for(var i=0;i<userList.length;i++) {
        var u=userList[i];
        console.log(u.username);
        console.log(u.password);
        if (u.username==username && u.password==password){
        status=true;
        localStorage.setItem('CurrentUser', username);
        currentUser=userList[i];
        break;
        }
      }
      if (status==true){
        location.href="EditProfile.html";
      }
 }

当用户注销时,使用此选项可以从本地存储中删除密钥。

localStorage.removeItem(密钥(

您使用的是HTML5的本地存储,它不能存储超过5mb的数据。无论何时使用将用户名和密码存储在本地存储和会话存储中,都是编程的坏习惯。你允许人们进入你的网站。尝试使用服务器端使用的任何编程语言的会话。你会自己破坏会话,然后显然你不会再获得价值。因此,使用服务器端是一个良好的编程习惯。

只需执行此

function checkUser(ev) {
  ev.preventDefault();
  var status=false;
  var username = document.getElementById("username").value;
  var password = document.getElementById("password").value;

  for(var i=0;i<userList.length;i++) {
    var u=userList[i];
    console.log(u.username);
    console.log(u.password);
    if (u.username==username && u.password==password){
    status=true;
                    localStorage.setItem("currentUser",u);//store whole data of logged user
    currentUser=userList[i];
    break;
    }
  }
  if (status==true){
    location.href="EditProfile.html";
  }

}

相关内容

  • 没有找到相关文章

最新更新