今天来讲讲常见的记住密码到底是怎么实现的

252 阅读2分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

在用antUI做项目的时候,发现很多的注册表单或者登录表单都是有记住密码的功能的

image.png

image.png

还没有做过类似的功能,心中有了几种方案的实现,但是我们不能只停留在空想状态,实践出真知。

分析

记住密码这样的功能应该是在前端进行完成比较好,我们只要把用户的信息保留在前端的存储中即可,那么常见的有cookie,localstorage,sessionstorage,再根据实际情况,那么这三者又有什么区别呢?我们怎么进行选择?可以看看我的这篇文章cookie?session?localStorage?sessionStorage?来个一把梭;

我们选择localstorage

1.首先要登录成功后才记住密码否则错误的密码是没有意义的

  const onFinish = (values: any) => {
    //点击提交按钮
    const { username, password, remember } = values;
    if (remember) {
      localStorage.setItem("userName", username);
      localStorage.setItem("password", password);
    }
    login(username, password)
      .then((res) => {
        const { data, msg } = res.data.data;
        if (res.data.code === 0) {
          message.success(msg);
          localStorage.setItem("userMes", JSON.stringify(data));
          navigate("/index");
        } else {
          message.error(msg);
        }
      })
      .catch((err) => {
        message.error("登录失败");
      });
  };

这两句代码将我们的账号信息保存起来,其实这还是不严谨的,我们为了安全应该对其进行加密后再保存,但是这里只是为了简单的演示所以就大行不顾细谨了。

  localStorage.setItem("userName", username);
  localStorage.setItem("password", password);
  

2.之后我们只要在页面挂载的时候进行缓存检查,查看是否有账号密码保护即可

  useEffect(() => {
    //页面一加载的时候获取缓存中是否有账号记录,有的话进行显示,实现账号密码记住的功能
      if(passwordInput!==null&&userNameInput!==null){
        (passwordInput as any).current.input.value =localStorage.getItem("userName");
        (userNameInput as any).current.input.value =localStorage.getItem("password");
      }
  }, []);

得到账号信息后,我们再对相应的input框进行内容的修改即可。这样我们就实现了一个简单的记住密码功能,如果在前面的过程中,有进行加密的操作,那么再获取到用户信息的时候进行解密即可,道理十分的简单。