位置: IT常识 - 正文

Vue实现记住账号密码功能(vue注册用户名和密码)

编辑:rootadmin
实现思路: 用户登录时若勾选“记住我”功能选项,则将登录名和密码(加密后)存入本地缓存,下次登录页面加载时自动获取保存好的账号和密码(需解密),回显到登录输入框中。 说到存入本地缓存,大家想到的一定是cookies、localStorage、sessionStorage,不过后者我是不推荐使用的,咱 ...

推荐整理分享Vue实现记住账号密码功能(vue注册用户名和密码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue登陆之后怎么显示用户名,vue记住密码怎么实现,vue实现记住账号密码,vue记住账号密码,vue保存用户登陆信息,vue实现记住账号密码,vue实现记住账号密码,vue实现记住账号密码,内容如对您有帮助,希望把文章链接给更多的朋友!

实现思路:

  用户登录时若勾选“记住我”功能选项,则将登录名和密码(加密后)存入本地缓存,下次登录页面加载时自动获取保存好的账号和密码(需解密),回显到登录输入框中。

Vue实现记住账号密码功能(vue注册用户名和密码)

  说到存入本地缓存,大家想到的一定是cookies、localStorage、sessionStorage,不过后者我是不推荐使用的,咱们既然需求是记住密码那肯定是长时间或到下次取消时失效,但sessionStorage仅在当前会话下有效,关闭浏览器窗口后就被清除了,所以并不适用于我们当前的需求,cookies呢可以手动设置过期时间,超过有效期则失效。未设置过期时间,关闭浏览器窗口后就被清除了,显然是符合我们开发需求的,localStorage呢除非主动清除localStorage里的信息,否则将永远存在,关闭浏览器窗口后下次启动任然存在,这个也是符合我们开发需求的,根据业务需求我选择的是localStorage,下面是我实现的具体步骤,废话不多说直接开干。

1 <el-form 2 ref="loginForm" 3 :model="loginForm" 4 :rules="loginRules" 5 class="login-form" 6 auto-complete="on" 7 label-position="left" 8 > 9 <div class="user-login">10 <div class="title-container">11 <span class="title">用户登录</span>12 <span class="annotation">BACKGROUND LOGIN</span>13 </div>14 <div class="core-container">15 <el-form-item prop="username">16 <span class="svg-container">17 <i class="icon el-icon-user" />18 </span>19 <el-input20 ref="username"21 v-model="loginForm.username"22 placeholder="请输入用户名称"23 name="username"24 type="text"25 tabindex="1"26 auto-complete="on"27 />28 </el-form-item>29 <el-form-item prop="password">30 <span class="svg-container">31 <i class="icon el-icon-lock" />32 </span>33 <el-input34 :key="passwordType"35 ref="password"36 v-model="loginForm.password"37 :type="passwordType"38 placeholder="请输入密码"39 name="password"40 tabindex="2"41 auto-complete="on"42 @keyup.enter.native="handleLogin"43 />44 <span class="show-pwd" @click="showPwd">45 <img46 src="@/icons/png/pawyc.png"47 v-if="passwordType === 'password'"48 />49 <i class="el-icon-view" v-else></i>50 </span>51 </el-form-item>52 <el-checkbox53 v-model="checked"54 label="记住密码"55 name="type"56 ></el-checkbox>57 </div>58 <el-button59 class="loginBtn"60 :loading="loading"61 type="primary"62 style="width: 100%; margin-bottom: 30px"63 @click.native.prevent="handleLogin(loginForm)"64 >立即登录</el-button65 >66 </div>67 </el-form>

记住账号密码实现流程

密码加密:为提高安全性,密码存储前需进行加密处理。目前加密方式有很多种,我这里选用了base64。

npm安装base64依赖//安装npm install --save js-base64//引入const Base64 = require("js-base64").Base64 1 const Base64 = require('js-base64').Base64 2 export default { 3 data() { 4 return { 5 loginForm: { 6 username: '', 7 password: '', 8 }, 9 checked: false,10 };11 },12 mounted () {13 let username = localStorage.getItem('username')14 if (username) {15 this.loginForm.username = localStorage.getItem('username')16 this.loginForm.password = Base64.decode(localStorage.getItem('password'))// base64解密17 this.checked = true18 }19 },20 // 立即登录21 handleLogin (loginForm) {22 this.$refs.loginForm.validate(async (isOK) => {23 if (isOK) {24 /* ------ 账号密码的存储 ------ */25 if (this.checked) {26 let password = Base64.encode(this.loginForm.password) // base64加密27 localStorage.setItem('username', this.loginForm.username)28 localStorage.setItem('password', password)29 } else {30 localStorage.removeItem('username')31 localStorage.removeItem('password')32 }33 try {34 let encrypt = new JSEncrypt() // 新建JSEncrypt对象35 encrypt.setPublicKey(this.publicKey) // 设置公钥36 let password = encrypt.encrypt(this.loginForm.password) // 对密码进行加密37 this.loading = true38 await this['user/login']({39 username: this.loginForm.username,40 password: password,41 captcha: this.captchaKey + ':' + this.loginForm.captcha,42 isRememberMe: this.loginForm.isRememberMe,43 isScanLogin: this.loginForm.isScanLogin ? 1 : 044 }).then((res) => {45 this.$router.push(46 {47 path:'/transitionPage',48 query:{49 username:this.loginForm.username50 }51 }52 )53 })54 } catch (error) {55 this.$message.error('用户名或密码错误!')56 } finally {57 // 不论执行try 还是catch 都会执行finally 去关闭转圈58 this.loading = false59 }60 }61 })62 }63 },64 };

进行到这里也就算是完成这个需求了

这个需求的核心代码我标一下

1 /* ------ 账号密码的存储 ------ */2 if (this.checked) {3 let password = Base64.encode(this.loginForm.password) // base64加密4 localStorage.setItem('username', this.loginForm.username)5 localStorage.setItem('password', password)6 } else {7 localStorage.removeItem('username')8 localStorage.removeItem('password')9 }
本文链接地址:https://www.jiuchutong.com/zhishi/310528.html 转载请保留说明!

上一篇:分享帝国CMS首页调用最新会员、活跃会员与积分排行的方法(分享帝国cms首页在哪)

下一篇:合集phpcms安全漏洞(php5.6漏洞)

  • 远离十个误区 让邮件营销爆发出洪荒之力(远离sb)

  • vivo NEX 3s的闪存规格是多少呢(vivo z3闪存类型)

  • 快手怎么看注册几年了(快手怎么看注册日期和时间)

  • 华为手机出现红色英文警告(华为手机出现红线条是怎么了)

  • 什么是douyin(什么是抖音社区自律公约)

  • 苹果7电池能用一天吗(苹果7电池能用快充吗)

  • 苹果七的小圆点在哪里设置(苹果七的小圆点怎么取消)

  • 苹果芯片为什么叫仿生(苹果芯片为什么不卖)

  • 打印机可以连接手机吗(打印机可以连接苹果手机吗)

  • 华为p40前置摄像头模糊(华为p40前置摄像头模糊怎么调)

  • 手机卡槽断了一半在里面怎么办(手机卡槽断了一半取不出来)

  • 抖音名字怎么改不了(抖音名字怎么改不了保存不了)

  • 算法与程序的关系是什么(算法与程序的关系a算法是对程序的描述)

  • 微商输入法语音用不了(微商输入法190版本)

  • 苹果11长宽高是多少厘米(苹果11长宽度)

  • iphone 拦截记录哪去了(iphone 拦截记录短信哪去了)

  • 微信单向好友发消息对方能看见吗(微信单向好友发红包能收到吗)

  • 抖音怎么上传超清视频(抖音怎么上传超长视频)

  • kindle删除的书籍为什么还会显示(kindle误删书怎么办)

  • 20gb等于多少亿字节(20gb等于多少个二进制位)

  • 收款语音播报器怎么用(收款语音播报器怎么设置)

  • 华为mate20照相机的使用方法(华为mate20照相机分辨率多少为好)

  • 抖音扫一扫在哪里(抖音扫一扫在哪里打开呢)

  • ios12.2电信volte怎么设置(中国电信 volte iphone)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络