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 相关文章推荐
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
javascript开发随笔二 动态加载js和文件
Nov 25 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
js实现获取焦点后光标在字符串后
Sep 17 Javascript
js实现支持手机滑动切换的轮播图片效果实例
Apr 29 Javascript
javascript入门教程基础篇
Nov 16 Javascript
js操作数组函数实例小结
Dec 10 Javascript
JavaScript中Array的实用操作技巧分享
Sep 11 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
javascript的hashCode函数实现代码小结
Aug 11 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
Oct 29 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
python 画函数曲线示例
2019/12/04 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
2013年保送生自荐信格式
2013/11/20 职场文书
网络维护中文求职信
2014/01/03 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
合作协议书范文
2014/08/20 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
停水通知
2015/04/16 职场文书
党员公开承诺书2016
2016/03/24 职场文书
导游词之张家口
2019/12/13 职场文书
5个实用的JavaScript新特性
2022/06/16 Javascript