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 相关文章推荐
use jscript List Installed Software
Jun 11 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
对于this和$(this)的个人理解
Sep 08 Javascript
简单谈谈json跨域
Mar 13 Javascript
js 获取本地文件及目录的方法(推荐)
Nov 10 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
Sep 19 Javascript
jQuery事件多次绑定与解绑问题实例分析
Feb 19 jQuery
vue中添加与删除关键字搜索功能
Oct 12 Javascript
Node.js API详解之 querystring用法实例分析
Apr 29 Javascript
基于vue和bootstrap实现简单留言板功能
May 30 Javascript
JSONObject与JSONArray使用方法解析
Sep 28 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 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获取一个字符串中间一部分字符的方法
2014/08/19 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
经验几则 推荐
2006/09/05 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
javascript实现留言板功能
2020/02/08 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
Python语言生成水仙花数代码示例
2017/12/18 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
python如何实现代码检查
2019/06/28 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
应届毕业生个人求职信范文
2014/01/29 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书