根据条件保存到 LocalStorage

Save to LocalStorage on a condition

我编写了两个我想合并为一个的脚本。脚本 1 用于检查电子邮件和密码是否正确,它会显示一条成功消息 "Correct" 并让您登录。脚本 2 是我用来将电子邮件和密码存储在 localstorge

中的

脚本 1

$(document).ready(function(){
    $("#form1").on('submit',function(event){
        event.preventDefault();

        data = $(this).serialize();
        $.ajax({
        type: "POST",

        url: "log.asp",
        data: data,
  success: function(data) {
      $('#log_msg').html(data);

    var result = $.trim(data);

    if(result==="Correct"){
       window.location = 'source.asp';

    }
  }

});
});
});

脚本 2

$(function() {
  var
    $email = $('#email'),
    $password = $('#password'),
    localEmail = localStorage.getItem("eaddress"),
    localPwd = localStorage.getItem("pwd");


  // SAVE VARIABLES TO LOCAL STORAGE
  $('#form1').on('submit', function() {
    localStorage.setItem("eaddress", $email.val());
    localStorage.setItem("pwd", $password.val());
  });

});

现在我想将两者合并在一起,如果成功消息相等,它应该只将电子邮件和密码保存在 localstorge 中 至 "Correct" 并登录

  1. 从不 在客户端存储密码!
  2. 从不 存储未加密的密码!

  3. 要将电子邮件地址存储在 localStorage 中,您可以使用此代码段:

    $(文档).ready(函数(){ $("#form1").on('submit',函数(事件){ event.preventDefault();

    var data = $(this).serialize();
    $.ajax({
      type: "POST",
      url: "log.asp",
      data: data,
    
      success: function(data) {
        $('#log_msg').html(data);
        var result = $.trim(data);
        if(result==="Correct"){
          localStorage.setItem('eaddress', $('#email').val());
        }
      }
    });
    

    }); });

注意:您必须自己清理 localStorage。如果您想存储数据以供进一步识别,请在 cookie 中使用 sessionId 或使用 sessionStorage 来保存临时数据。

编辑: 要在页面加载后提交表单,您可以尝试这样的操作:

$(function(){
  var eAddr = localStorage.getItem('eaddress');
  if (eAddr !== null) {
    $('#email').val(eAddr);
    $('#form1').trigger('submit');
  }
});

注意:如果您将密码加密存储在客户端并通过表单提交,则身份验证过程非常不安全。

我认为你的认证设计是错误的。您应该使用身份验证 cookie(如会话 cookie)并在服务器端验证它。无需在每次加载页面时提交表单,也无需在客户端存储凭据。