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-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实现记住账号密码功能的更多相关文章
- 利用SharedPreferences完成记住账号密码的功能
利用SharedPreferences完成记住账号密码的功能 效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 Sh ...
- struts2的记住账号密码的登录设计
一个简单的基于struts2的登录功能,实现的额外功能有记住账号密码,登录错误提示.这里写上我在设计时的思路流程,希望大家能给点建设性的意见,帮助我改善设计. 登录功能的制作,首先将jsp界面搭建出来 ...
- css 修改placeholder字体颜色字体大小 修改input记住账号密码后的默认背景色
壹 ❀ 引 本来这个阶段的项目页面都是给实习生妹子做的,我只用写写功能接接数据,但这两天妹子要忙翻译,这个工作阶段也快结束了导致有点慌,只能自己把剩余的几个小页面给写了. 那么做页面的过程中,UI也 ...
- 基于struts2的记住账号密码的登录设计
一个简单的基于struts2的登录功能,实现的额外功能有记住账号密码,登录错误提示.这里写上我在设计时的思路流程,希望大家能给点建设性的意见,帮助我改善设计. 登录功能的制作,首先将jsp界面搭建出来 ...
- C# ASP.NET MVC:使用Cookie记住账号密码
MVC记住账号密码 使用cookie操作 前端: <div> 用户名:<input type="text" id="UserName" val ...
- Linux让git记住账号密码
Linux让git记住账号密码 ——IT唐伯虎 摘要: Linux让git记住账号密码. 1.进入根目录,指令:cd / 2.创建记录账号密码的文件,指令:touch .git-credentials ...
- Git设置记住账号密码
Git设置记住账号密码 添加如下配置 [credential] helper = store
- cocos2d JS 本地缓存存储登陆记住账号密码->相当于C++中的UserDefault
在cocos-js 3.0以上的版本中,当我们用到本地存储的时候,发现以前用到的UserDefault在JS中并没有导出,而是换成了LocalStorage. 在LocalStorage.h文件中我们 ...
- Jquery 实现 “下次自动登录” 记住用户名密码功能
转载自:http://blog.csdn.net/aspnet_lyc/article/details/12030039?utm_source=tuicool&utm_medium=refer ...
- OpenVPN记住账号密码自动连接
说明:在增加了证书+账号密码之后,安全性确实提高了,但是面临的问题也有,每次重启时必须输入账号密码才能连接,这也造成了无人值守的问题. 解决: 1.在Client的client.ovpn末尾添加一行a ...
随机推荐
- CSS & JS Effect – Image Overlay
介绍 一张背景图, 一行写字, 一层黑影 (Image Overlay), 如果没有做黑影, 字的颜色容易和图片撞, contrast 就会很烂. HTML 结构 <div class=&quo ...
- js 翻译 c# 注意事项
1. split('') 在 c# 是不可以 .Split("") 的 要写 ToCharArray() 更新: 2021-09-25, split('') 是不好的写法, es6 ...
- 基于图扑 HT for Web 实现的昼夜切换场景应用
图扑软件 HT 的案例中有许多白天黑夜效果.这种效果在各类不同的项目中得到了广泛的应用和认可. 白天黑夜效果是视觉设计和交互设计中常见的一种手法.通过细致巧妙地调整色彩.亮度.对比度等视觉参数,即可成 ...
- Softmax 函数 详解
- vsphere8.0 VCenter部署
一.vCenter Server 介绍 vCenter Server是VMware提供的一种集中管理平台,用于管理和监控虚拟化环境中的虚拟机.主机.存储和网络等资源.它提供了一套功能强大的工具和界面, ...
- 从Windows 11 23H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案
从Windows 11 23H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案 在升级至 Windows 11 24H2 后,使用 git add 等命令时,可能会遇到如下错误提示: ...
- Spring中的事务提交事件
如果想在spring操作事务结束后执行一些代码,应该怎么办? 为什么要这样?比如我们在事务中给其他系统发了消息,期望事务提交后过一会收到这个系统的回应,然后操作刚刚提交的数据.但是如果回应来的太快就像 ...
- RHEL 环境下 Subversion 服务器部署与配置
RHEL 环境下 Subversion 服务器部署与配置 1. 更新系统 首先确保系统软件包是最新的: sudo yum update -y 2. 安装Apache和Subversion 2.1 安装 ...
- 用故事说透HTTPS
本文来自素燕公众号,原文地址:用故事说透https 故事中的主演: 小华今年上大一,这是她第一次离开父母,独自一人到北京上学.今天妈妈的生日,想了想要给妈妈一个祝福,便给妈妈发了条消息: 妈妈收到这条 ...
- Ubuntu 22.04 解决和 Windows 共享蓝牙设备的问题
我有一个 Airpods,连接到 WIndows 可以正常工作,但连接到 ubuntu 后会无法连接,只能删除设备选择重联,但是这又会导致 Windows 不能连接到耳机,只能也删除重新连接,费神费力 ...