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 相关文章推荐
datePicker——日期选择控件(with jquery)
Feb 20 Javascript
网页禁用右键实现代码(JavaScript代码)
Oct 29 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
JavaScript实现select添加option
Jul 03 Javascript
JavaScript电子时钟倒计时
Jan 09 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 Javascript
vue.js实现照片放大功能
Jun 23 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
桌面中心(三)修改数据库
2006/10/09 PHP
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
[JS]点出统计器
2020/10/11 Javascript
JavaScript中的Document文档对象
2008/01/16 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
小学教学随笔感言
2014/02/26 职场文书
文明班级建设方案
2014/05/15 职场文书
行政管理专业求职信
2014/07/06 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
社区母亲节活动总结
2015/02/10 职场文书
地震捐款简报
2015/07/21 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js