前端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 同时提交多个Web表单的方法
Feb 19 Javascript
JS按位非(~)运算符与~~运算符的理解分析
Jul 31 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 Javascript
jQuery的end()方法使用详解
Jul 15 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
Aug 02 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 Javascript
详解vue axios中文文档
Sep 12 Javascript
微信小程序日期时间选择器使用方法
Feb 01 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
javascript History对象原理解析
Feb 17 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
使用PHP模拟HTTP认证
2006/10/09 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python3简单实例计算同花的概率代码
2017/12/06 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python散点图实例之随机漫步
2018/08/27 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
毕业生求职推荐信
2013/11/04 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
仓库主管岗位职责
2014/03/02 职场文书
目标责任书范本
2014/04/16 职场文书
保护环境标语
2014/06/09 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python