前端vue+elementUI如何实现记住密码功能


Posted in Javascript onSeptember 20, 2020

我们这回使用纯前端保存密码

既然是记住密码,前端也就是使用cookie保存,访问时用cookie读取

先来了解下cookie的基本使用吧

Cookie

所有的cookie信息都在document.cookie中存放着,是一个字符串,里面的cookie以分号和空格分隔。就像这样:

"key1=value1; key2=value2; key3=value3"
	// 使用document.cookie 来获取所有cookie
	docuemnt.cookie = "id="+value

操作cookie

/**
 * 设置cookie值
 *
 * @param {String} name cookie名称
 * @param {String} value cookie值
 * @param {Number} expiredays 过期时间,天数
 */
 function setCookie (name, value, expiredays) {
 let exdate = new Date() 
 		//setDate获取N天后的日期
 exdate.setDate(exdate.getDate() + expiredays) //getDate() 获取当前月份的日 + 过期天数
 document.cookie =name+"="+encodeURI(value)+";path=/;expires="+exdate.toLocaleString()
 }
 /**
 * 获取cookie值
 * @param {String} name cookie名称
 */
 function getCookie (name) {
  var arr = document.cookie.split(";") //转换数组
  //["_ga=GA1.1.1756734561.1561034020", " mobile=123" password=456"]
  for(var i=0;i<arr.length;i++){
   var arr2 = arr[i].split('='); // ["_ga", "GA1.1.1756734561.1561034020"]
   if(arr2[0].trim() == name){
    return arr2[1]
   }
  }
 }
 /**
 * 删除指定cookie值
 * @param {String} name cookie名称
 */
 function clearCookie (name) {
 setCookie(name, '', -1)
 }
 /**
 * 浏览器是否支持本地cookie
 */
 function isSupportLocalCookie () {
 let {name, value} = {name: 'name', value: 'mingze'}
 setCookie(name, value, 1) //设置cookie
 return getCookie(name).includes(value) //includes 判断数组name中是否含有当前value(返回true or false)
 }

好了了解了cookie我们开始如何实现一个简单的记住密码功能

HTML代码

<el-form :model="ruleForm" :rules="rules"
 status-icon
 ref="ruleForm" 
 label-position="left" 
 label-width="0px" 
 class="demo-ruleForm login-page">
 <h3 class="title">系统登录</h3>
<el-form-item prop="username">
  <el-input type="text" 
   v-model="ruleForm2.username" 
   auto-complete="off" 
   placeholder="用户名"
  ></el-input>
 </el-form-item>
<el-form-item prop="password">
  <el-input type="password" 
   v-model="ruleForm2.password" 
   auto-complete="off" 
   placeholder="密码"
  ></el-input>
 </el-form-item>
<el-checkbox v-model="checked" style="color:#a0a0a0;margin:0 0 20px 0">记住密码</el-checkbox>
<el-form-item style="width:100%;">
 <el-button type="primary" style="width:100%;" @click="handleSubmit" :loading="logining">登录	</el-button>
</el-form-item>
</el-form>

vue代码

data(){
  return {
  	 logining: false,
   checked: true
   ruleForm: {
    username: '',
    password: '',
   },
   rules: {
    username: [{required: true, message: '请输入您的帐户', trigger: 'blur'}],
    password: [{required: true, message: '请输入您的密码', trigger: 'blur'}]
   },
  }
 },
 mounted() {
  this.account() //获取cookie的方法
 },
 account(){
  if(document.cookie.length <= 0){
   console.log(this.getCookie('mobile'))
   this.ruleForm.username = this.getCookie('mobile')
   this.ruleForm.password = this.getCookie('password')
  }
 },
 setCookie(c_name,c_pwd,exdate){ //账号,密码 ,过期的天数
  var exdate = new Date()
  console.log(c_name,c_pwd)
  exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdate) //保存的天数
  document.cookie ="mobile="+c_name+";path=/;expires="+exdate.toLocaleString()
  document.cookie ="password="+c_pwd+";path=/;expires="+exdate.toLocaleString()
 },
 getCookie(name){
  var arr = document.cookie.split(";") 
   //["_ga=GA1.1.1756734561.1561034020", " mobile=123" password=456"]
   for(var i=0;i<arr.length;i++){
    var arr2 = arr[i].split('='); // ["_ga", "GA1.1.1756734561.1561034020"]
    if(arr2[0].trim() == name){
     return arr2[1]
    }
   }
  },
  clearCookie(){
   this.setCookie("","",-1) //清除cookie 
  },
	handleSubmit(){ //提交登录
	 this.$refs.ruleForm.validate((valid) => {
   if(valid){
   	this.logining = true;
   	var _this = this;
   	if(_this.checked == true){
   	 	//存入cookie
    _this.setCookie(_this.ruleForm.username,_this.ruleForm.password,7) //保存7天
   }else{
    _this.clearCookie();
   }
   Login({
    mobile:_this.ruleForm.username,
    password:_this.ruleForm.password
   }).then((result) => {
    console.log(result)
    _this.$alert('登陆成功')
   })
  }
	}

好了,这回的记住密码就到这里,小伙伴们一起努力吧 ^ 0 ^

总结

到此这篇关于前端vue+elementUI如何实现记住密码功能的文章就介绍到这了,更多相关vue+elementUI记住密码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
通过Javascript创建一个选择文件的对话框代码
Jun 16 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
jQuery插件实现适用于移动端的地址选择器
Feb 18 Javascript
Angular.js中$apply()和$digest()的深入理解
Oct 13 Javascript
原生JS实现匀速图片轮播动画
Oct 18 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
May 24 Javascript
表格展示利器 Bootstrap Table实例代码
Sep 06 Javascript
JS Testing Properties 判断属性是否在对象里的方法
Oct 01 Javascript
vue-scroller记录滚动位置的示例代码
Jan 17 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
纯js+css实现在线时钟
Aug 18 Javascript
Vue+element+cookie记住密码功能的简单实现方法
Sep 20 #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
You might like
世界第一个无线广播电台 KDKA
2021/03/01 无线电
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
设定php简写功能的方法
2019/11/28 PHP
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
在Python的Django框架中创建和使用模版
2015/07/15 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
Python3运算符常见用法分析
2020/02/14 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
linux面试题参考答案(3)
2012/09/13 面试题
2014年结对帮扶工作总结
2014/12/17 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers