实现思路:

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

  说到存入本地缓存,大家想到的一定是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-input
20 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-input
34 :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 <img
46 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-checkbox
53 v-model="checked"
54 label="记住密码"
55 name="type"
56 ></el-checkbox>
57 </div>
58 <el-button
59 class="loginBtn"
60 :loading="loading"
61 type="primary"
62 style="width: 100%; margin-bottom: 30px"
63 @click.native.prevent="handleLogin(loginForm)"
64 >立即登录</el-button
65 >
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 = true
18 }
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 = true
38 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 : 0
44 }).then((res) => {
45 this.$router.push(
46 {
47 path:'/transitionPage',
48 query:{
49 username:this.loginForm.username
50 }
51 }
52 )
53 })
54 } catch (error) {
55 this.$message.error('用户名或密码错误!')
56 } finally {
57 // 不论执行try 还是catch 都会执行finally 去关闭转圈
58 this.loading = false
59 }
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 }

Vue实现记住账号密码功能的更多相关文章

  1. 利用SharedPreferences完成记住账号密码的功能

    利用SharedPreferences完成记住账号密码的功能 效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 Sh ...

  2. struts2的记住账号密码的登录设计

    一个简单的基于struts2的登录功能,实现的额外功能有记住账号密码,登录错误提示.这里写上我在设计时的思路流程,希望大家能给点建设性的意见,帮助我改善设计. 登录功能的制作,首先将jsp界面搭建出来 ...

  3. css 修改placeholder字体颜色字体大小 修改input记住账号密码后的默认背景色

     壹 ❀ 引 本来这个阶段的项目页面都是给实习生妹子做的,我只用写写功能接接数据,但这两天妹子要忙翻译,这个工作阶段也快结束了导致有点慌,只能自己把剩余的几个小页面给写了. 那么做页面的过程中,UI也 ...

  4. 基于struts2的记住账号密码的登录设计

    一个简单的基于struts2的登录功能,实现的额外功能有记住账号密码,登录错误提示.这里写上我在设计时的思路流程,希望大家能给点建设性的意见,帮助我改善设计. 登录功能的制作,首先将jsp界面搭建出来 ...

  5. C# ASP.NET MVC:使用Cookie记住账号密码

    MVC记住账号密码 使用cookie操作 前端: <div> 用户名:<input type="text" id="UserName" val ...

  6. Linux让git记住账号密码

    Linux让git记住账号密码 ——IT唐伯虎 摘要: Linux让git记住账号密码. 1.进入根目录,指令:cd / 2.创建记录账号密码的文件,指令:touch .git-credentials ...

  7. Git设置记住账号密码

    Git设置记住账号密码 添加如下配置 [credential] helper = store

  8. cocos2d JS 本地缓存存储登陆记住账号密码->相当于C++中的UserDefault

    在cocos-js 3.0以上的版本中,当我们用到本地存储的时候,发现以前用到的UserDefault在JS中并没有导出,而是换成了LocalStorage. 在LocalStorage.h文件中我们 ...

  9. Jquery 实现 “下次自动登录” 记住用户名密码功能

    转载自:http://blog.csdn.net/aspnet_lyc/article/details/12030039?utm_source=tuicool&utm_medium=refer ...

  10. OpenVPN记住账号密码自动连接

    说明:在增加了证书+账号密码之后,安全性确实提高了,但是面临的问题也有,每次重启时必须输入账号密码才能连接,这也造成了无人值守的问题. 解决: 1.在Client的client.ovpn末尾添加一行a ...

随机推荐

  1. SQL Server – 我常用语句

    前言 旧没用又忘记了, 又没有 intellisense, 记入这里吧. Reset Auto Increment DBCC CHECKIDENT ('TableName'); -- check cu ...

  2. ASP.NET Core – MVC vs Razor Page

    前言 早年只有 MVC, Razor Page 是后来才出现的. 一开始其实我很看不起 Razor Page, MVC 能做的东西为什么要搞多一个 Razor Page 来做呢? 但我还是尝试用了起来 ...

  3. 向量法求 T3 这个若智 r^2

    int sqr_vector_dis(node a){ return a.x*a.x+a.y*a.y; } frac vector_multi(node a,node b){ return frac( ...

  4. .NET 跨平台工业物联网网关解决方案

    前言 随着工业4.0时代的到来,物联网技术正在以前所未有的速度改变着我们的生产和生活方式.本文给大家介绍一个基于 .NET 6 开发的跨平台工业物联网网关解决方案. 工业物联网(IIoT)成为了连接物 ...

  5. 29. GIL全局解释器锁、信号量、线程池进程池

    1. GIL全局解释器锁 1.1 概念 '''In CPython, the global interpreter lock, or GIL, is a mutex that prevents mul ...

  6. 高强度学习训练第七天总结:JVM分配内存机制

    理解JVM内存分配策略 三大原则+担保机制 JVM分配内存机制有三大原则和担保机制 具体如下所示: 优先分配到eden区 大对象,直接进入到老年代 长期存活的对象分配到老年代 空间分配担保 对象优先在 ...

  7. /proc/zoneinfo

    root@pita2_mr813_tina35:/# cat /proc/zoneinfo Node 0, zone DMA per-node stats nr_inactive_anon 4749 ...

  8. vue3+tpyeScript + element plus 三级复选框,全选控制全部,左侧选中控制右侧全选

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  9. java基础语法(从0开始到java方法)

    文章目录 1.第一个java程序 2.数据的表示详解 2.1 整数在计算机中的存储原理 2.2 字符在计算机中的存储原理 2.3 图片视频声音的存储原理 2.4 数据的其他表示形式 2.5 不同进制在 ...

  10. Nuxt.js 应用中的 server:devHandler 事件钩子详解

    title: Nuxt.js 应用中的 server:devHandler 事件钩子详解 date: 2024/10/26 updated: 2024/10/26 author: cmdragon e ...