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实现图片预加载与延时加载的方法
Dec 22 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
JS中对数组元素进行增删改移的方法总结
Dec 15 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
微信小程序webview实现长按点击识别二维码功能示例
Jan 24 Javascript
浅谈React Native 传参的几种方式(小结)
May 21 Javascript
js逆向解密之网络爬虫
May 30 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 Javascript
Node爬取大批量文件的方法示例
Jun 28 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 Javascript
uniapp开发小程序的经验总结
Apr 08 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
php发送post请求的三种方法
2014/02/11 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
js 学习笔记(三)
2009/12/29 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
javascript中的面向对象
2017/03/30 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
Python中转换角度为弧度的radians()方法
2015/05/18 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Python算法应用实战之栈详解
2017/02/04 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
python实发邮件实例详解
2019/11/11 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
《月迹》教学反思
2014/02/19 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
匿名信格式范文
2015/05/27 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书