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 相关文章推荐
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
Mar 06 Javascript
jQuery图片预加载 等比缩放实现代码
Oct 04 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
Oct 25 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
Vue.js中数组变动的检测详解
Oct 12 Javascript
js通过classname来获取元素的方法
Nov 24 Javascript
谈谈Vue.js——vue-resource全攻略
Jan 16 Javascript
jQuery弹出窗口简单实现代码
Mar 09 Javascript
vue 项目如何引入微信sdk接口的方法
Dec 18 Javascript
借助云开发实现小程序短信验证码的发送
Jan 06 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
解决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
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
微信小程序排坑指南详解
2018/05/23 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
python装饰器深入学习
2018/04/06 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
如何使用python切换hosts文件
2020/04/29 Python
什么是Python包的循环导入
2020/09/08 Python
Python类的继承super相关原理解析
2020/10/22 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
实习生体会的自我评价范文
2013/11/28 职场文书
领导党性分析材料
2014/02/15 职场文书
党员自我对照检查材料
2014/08/19 职场文书
委托证明书
2014/09/17 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
新郎新娘答谢词
2015/01/04 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
小学美术教学反思
2016/02/17 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript