Vue+element+cookie记住密码功能的简单实现方法


Posted in Javascript onSeptember 20, 2020

实现功能:

1、登录时勾选记住密码,用cookie保存账号和密码并对密码进行两次加密处理(纯前端),下次登录自动输入账号密码

2、登录时不勾选,清空cookie,下次登录需要输入

效果图:

Vue+element+cookie记住密码功能的简单实现方法

=============================================================================================================================================================================================

Html

<div class="login-form-item">
     <el-form :model="ValidateForm" ref="ValidateForm" label-width="100px" class="demo-ruleForm">
      <el-form-item

        prop="username"
        :rules="[{ required: true, message: '用户名不能为空'}
      ]">
       <span><i class="el-icon-user"></i></span><el-input type="username" v-model.number="ValidateForm.username" autocomplete="off" clearable placeholder="用户名"></el-input>
      </el-form-item>
      <br>
      <el-form-item

        prop="password"
        :rules="[{ required: true, message: '密码不能为空'},
      ]">
       <span><i class="el-icon-lock"></i></span><el-input type="password" v-model.number="ValidateForm.password" autocomplete="off" clearable show-password placeholder="密码"></el-input>
      </el-form-item>
      <br>
      <el-form-item

        prop="sidentify"
        :rules="[
{ required: true, message: '验证码不能为空'},]"
      >
       <el-row class="sidentify">
        <el-col :span="21">
         <el-input type="age" v-model="ValidateForm.sidentify" autocomplete="off" placeholder="验证码"></el-input>
        </el-col>
        <el-col :span="3" class="sidentify sidentify-img">
         <sidentify :changeCode.sync='identifyCode' ref="switchSidentify"></sidentify>
        </el-col>
       </el-row>
      </el-form-item>
      <el-form-item>
       <el-checkbox v-model="checked" class="sidentify">记住密码</el-checkbox>
      </el-form-item>
      <el-form-item>
       <el-button type="primary" @click="submitForm('ValidateForm')" class="login-btn">登录</el-button>
      </el-form-item>
     </el-form>
    </div>

加密方法我用的base64和CryptoJS 大家记得去下载

Vue+element+cookie记住密码功能的简单实现方法

js部分:

登录

// 登录
submitForm(formName) {
 this.$refs[formName].validate((valid) => {
  if (valid) {
   let username=this.ValidateForm.username;
   let pwd=this.ValidateForm.password;
   let sidentify=this.ValidateForm.sidentify;
   // 验证码通过
   if (sidentify == this.identifyCode){
    this.request.post(this.api.login.logindo,{username:username,pwd:pwd}).then((res)=>{
     console.log(res);
     if (res.data.code == 200){
      this.$message({
       message : '登录成功!',
       type : 'success'
      })
      //调用check选中方法
      this.checkedPwd(username,pwd)
      this.$router.push({name:'Home'})
     }else {
      this.$message({
       message : '账号或密码错误,请重新输入!',
       type : 'error'
      })
      //清空
      this.resetForm('ValidateForm')
      //刷新验证码
      this.$refs.switchSidentify.changeCode()
     }
    })
   }else {
    this.$message({
     message : '验证码输入错误,请重新输入!',
     type : 'error'
    })
    this.$refs.switchSidentify.changeCode()
    this.resetForm('ValidateForm')
   }
  } else {
   return false;
  }
 });
},

check方法:

checkedPwd(username,pwd){
 // 记住密码进行cookie存储和密码加密
 if (this.checked){
  // base64 加密
  let base64Pwd=Base64.encode(pwd);
  // Encrypt 加密
  let cryptoJsPwd=CryptoJS.AES.encrypt(base64Pwd,key).toString()
  // 账号密码保存天数
  this.setCookie(username,cryptoJsPwd,7)
 }else{
  // 清空
  this.clearCookie()
 }
},

设置读取和清空cookie

// 设置cookie
setCookie(c_name, c_pwd, exdays) {
 var exdate = new Date(); // 获取时间
 exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays); // 保存的天数
 // 字符串拼接cookie
 window.document.cookie = "username" + "=" + c_name + ";path=/;expires=" + exdate.toGMTString();
 window.document.cookie = "password" + "=" + c_pwd + ";path=/;expires=" + exdate.toGMTString();
},
// 读取cookie
getCookie: function() {
 if (document.cookie.length > 0) {
  //checked为true
  this.checked=true
  var arr = document.cookie.split('; ');
  for (var i = 0; i < arr.length; i++) {
   var arr2 = arr[i].split('=');
   if (arr2[0] == 'username') {
    this.ValidateForm.username = arr2[1];
   } else if (arr2[0] == 'password') {
    // Decrypt 解密
    let bytes = CryptoJS.AES.decrypt(arr2[1],key)
    let originalText=bytes.toString(CryptoJS.enc.Utf8)
    // base64解密
    let pwd=Base64.decode(originalText)
    this.ValidateForm.password = pwd;
   }
  }
 }
},
// 清除cookie
clearCookie: function() {
 this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
},

一定要创建后读取cookie

created () {
 this.getCookie()
},

总结

到此这篇关于Vue+element+cookie记住密码功能的简单实现方法文章就介绍到这了,更多相关Vue+element+cookie记住密码功能内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
基于jQuery的试卷自动排版系统实现代码
Jan 06 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
判定是否原生方法的JS代码
Nov 12 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
jquery实现搜索框常见效果的方法
Jan 22 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
简单封装js的dom查询实例代码
Jul 08 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
Feb 23 Javascript
在vue中给列表中的奇数行添加class的实现方法
Sep 05 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
javascript canvas检测小球碰撞
Apr 17 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 #Javascript
vue-cli3 热更新配置操作
Sep 18 #Javascript
vue-cli 关闭热更新操作
Sep 18 #Javascript
Node.JS如何实现JWT原理
Sep 18 #Javascript
浏览器JavaScript调试功能无法使用解决方案
Sep 18 #Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
Sep 18 #Javascript
js实现手表表盘时钟与圆周运动
Sep 18 #Javascript
You might like
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
jquery each()源代码
2011/02/14 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
js控制table合并具体实现
2014/02/20 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
node.js实现快速截图
2016/08/27 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
jQuery上传插件webupload使用方法
2017/08/01 jQuery
利用node.js如何创建子进程详解
2017/12/09 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python实现12306火车票抢票系统
2019/07/04 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
群众路线教育实践活动心得体会
2014/03/07 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
学校捐款活动总结
2015/05/09 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
浅析Python实现DFA算法
2021/06/26 Python
MySQL 服务和数据库管理
2021/11/11 MySQL