Vue + Element UI + JSEncrypt实现简单登录页面

news2024/11/26 2:24:43

安装依赖

npm install jsencrypt --save

局部引入

import JSEncrypt from 'jsencrypt/bin/jsencrypt';

登录页面index.vue

<template>
	<div class="loginbody">
		<div class="logindata">
			<div class="logintext">
				<h2>Welcome</h2>
			</div>
			<div class="formdata">
				<el-form ref="form" :model="form" :rules="rules">
					<el-form-item prop="username">
						<el-input v-model="form.username" clearable placeholder="请输入账号"></el-input>
					</el-form-item>
					<el-form-item prop="password">
						<el-input v-model="form.password" clearable placeholder="请输入密码" show-password></el-input>
					</el-form-item>
				</el-form>
			</div>

			<div class="tool">
				<el-checkbox v-model="checked" @change="remember">记住密码</el-checkbox>
			</div>

			<div class="butt">
				<el-button type="primary" @click.native.prevent="login('form')">登录</el-button>
			</div>
		</div>
	</div>
	</div>
</template>

<script>
	import JSEncrypt from 'jsencrypt/bin/jsencrypt';
	export default {
		data() {
			return {
				form: {
					username: "",
					password: "",
				},
				pbkey: "",
				checked: true,
				rules: {
					username: [{
						required: true,
						message: "请输入用户名",
						trigger: "blur"
					}],
					password: [{
						required: true,
						message: "请输入密码",
						trigger: "blur"
					}],
				},
			};
		},
		mounted() {
			// 是否记住密码
			if (localStorage.getItem("emisLoginInfo")) {
				this.form = JSON.parse(localStorage.getItem("emisLoginInfo"))
				this.checked = true;
			}
		},
		methods: {
			// 点击登录按钮
			login(form) {
				this.$refs[form].validate((valid) => {
					if (valid) {
						// 表单校验通过

						this.$api.getPublicKey(({
							data
						}) => {
							this.pbkey = data;
							this.doLogin();
						})
					} else {
						return false;
					}
				});
			},
			// 登录获取token
			doLogin() {
				let loginData = {
					userName: this.form.userName,
					passWord: this.encrypt(this.form.password)
				}
				this.$api.login(loginData, ({
					data
				}) => {
					localStorage.setItem("emisToken", data);
					this.$router.push({
						path: '/home'
					});
				})
			},
			// 加密
			encrypt(pwd) {
				const encrypt = new JSEncrypt();
				encrypt.setPublicKey(this.pbkey); //设置公钥
				return encrypt.encrypt(pwd);
			},
			// 解密 
			decrypt(pwd) {
				const encrypt = new JSEncrypt();
				encrypt.setPrivateKey(privateKey); //设置私钥
				return encrypt.decrypt(pwd);
			},
			// 记住密码
			remember(data) {
				this.checked = data;
				if (this.checked) {
					localStorage.setItem("emisLoginInfo", JSON.stringify(this.form))
				} else {
					localStorage.removeItem("emisLoginInfo")
				}
			},
		},
	};
</script>

<style scoped lang="scss">
	@import "index.scss";
</style>

样式index.scss

.loginbody {
	width: 100%;
	height: 100%;
	min-width: 1000px;
	background: url("~@/assets/images/login/bg.png") no-repeat center/cover;
	overflow: auto;
	background-repeat: no-repeat;
	position: fixed;
	line-height: 100%;
	padding-top: 300px;
	box-sizing: border-box;

	.logintext {
		margin-bottom: 20px;
		line-height: 50px;
		text-align: center;
		font-size: 60px;
		font-weight: bolder;
		color: white;
		text-shadow: 2px 2px 4px #000;
	}

	.logindata {
		width: 400px;
		height: 300px;
		transform: translate(-50%);
		margin-left: 50%;
	}
	
	.tool {
	  color: #606266;
	}

	.butt {
		text-align: center;
		margin: auto;
	}
}

背景图:
在这里插入图片描述
实现页面:
在这里插入图片描述

参考文章:vue+element ui实现好看的登录界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《梦醒蝶飞:释放Excel函数与公式的力量》8.3 COUNTBLANK函数

8.3 COUNTBLANK函数 在数据处理和分析中&#xff0c;我们经常需要识别和统计数据集中的空白单元格。COUNTBLANK函数是Excel中用于统计某个范围内空白单元格数量的强大工具。 8.3.1 函数简介 COUNTBLANK函数用于统计指定范围内的空白单元格数量。这在数据清洗、数据完整性检查…

《NATURE丨使用 AlphaFold 3 准确预测生物分子相互作用的结构》

NATURE丨使用 AlphaFold 3 准确预测生物分子相互作用的结构 注意&#xff01;&#xff1a;本文创作仅根据个人理解和网络信息&#xff0c;如有错误恳请指正&#xff01;谢谢&#xff01; 大家好&#xff0c;今天分享的文献是2024年5月发表在Nature上的“ Accurate structure …

大模型学习笔记3【大模型】LLaMA学习笔记

文章目录 学习内容LLaMALLaMA模型结构LLaMA下载和使用好用的开源项目[Chinese-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca)Chinese-Alpaca使用量化评估 学习内容 完整学习LLaMA LLaMA 2023年2月&#xff0c;由FaceBook公开了LLaMA&#xff0c;包含7B&#xff0…

视频怎么制作gif动态图片?GIF制作方法分享

视频怎么制作gif动态图片&#xff1f;视频制作GIF动态图片&#xff0c;不仅保留了视频的生动瞬间&#xff0c;还赋予了图像循环播放的魔力。这一技能不仅让创意表达更加丰富多彩&#xff0c;还极大地提升了视觉传播的效率和趣味性。在快节奏的数字时代&#xff0c;GIF动图以其小…

(vue)eslint-plugin-vue版本问题 安装axios时npm ERR! code ERESOLVE

(vue)eslint-plugin-vue版本问题 安装axios时npm ERR! code ERESOLVE 解决方法&#xff1a;在命令后面加上 -legacy-peer-deps结果&#xff1a; 解决参考&#xff1a;https://blog.csdn.net/qq_43799531/article/details/131403987

基于springboot的合肥师范学院学生党员发展管理系统的设计与实现-计算机毕业设计源码04831

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

安华金和—可信数据空间助力公共数据授权运营安全有序开展的实践探索

伴随数字化、网络化和智能化的快速发展&#xff0c;数字经济与实体经济深度融合&#xff0c;数据已然成为经济发展赖以依托的基础性、战略性资源&#xff0c;对社会生产、分配、流通、消费和社会服务管理等各环节产生深刻影响。我国高度重视数字经济发展&#xff0c;将数据列入…

什么是微积分

微积分&#xff0c;英文calculus&#xff0c;源自拉丁语&#xff0c;意为用于计数的小鹅卵石。 微积分都是关于变化的。这句话怎么理解呢&#xff1f;比如说&#xff0c;我们正在路上开着车&#xff0c;问此时此刻的车速是多少&#xff1f;我们可能会去看速度表显示多少。但是…

爬虫笔记19——代理IP的使用

访问网站时IP被阻止 有些网站会设置特定规则来限制用户的访问&#xff0c;例如频率限制、单一账户多次登录等。 网站为了保护自身安全和用户体验&#xff0c;会设置防御机制&#xff0c;将涉嫌恶意行为的IP地址加入黑名单并屏蔽访问。如果用户在使用网站时违反了这些规则&…

[JS]正则表达式

介绍 正则表达式是定义匹配字符串的规则, 在JS中, 正则表达式也是对象, 通常用于查找或替换符合规则的文本 许多语言都支持正则表达式, 在前端中常见的场景就是表单验证和敏感词替换 语法 正则字面量 / / const str 好好学习,天天向上 // 1.定义规则: const reg /好///…

如何保障云计算健康发展

随着云计算技术的日益成熟&#xff0c;云原生技术凭借其“生于云、长于云”的核心理念&#xff0c;已然成为未来十年云计算发展的关键驱动力。这项技术不仅有效应对了传统云实践中应用升级滞后、架构繁重、迭代效率低下等挑战&#xff0c;更为业务创新铺设了坚实的基石。云原生…

Doris动态分区DYNAMIC PARTITION结果没有自动创建出当前分区

版本&#xff1a;Doris Version: 2.1.2 环境&#xff1a;DorisFE 2台 DorisBE 4台 Doris集群版本搭建详细教程&#xff1a;Apache Doris 2.x 版本【保姆级】安装使用教程_system has no available disk capacity or no availa-CSDN博客 在确认服务器资源都没有问题的情况下,…

【elementui】记录解决el-tree开启show-checkbox后,勾选一个叶结点后会自动折叠的现象

第一种解决方案&#xff1a;设置default-expand-keys的值为当前选中的key值即可 <el-treeref"tree"class"checkboxSelect-wrap":data"treeData"show-checkboxnode-key"id":expand-on-click-node"true":props"defau…

为什么不能在foreach中删除元素

文章目录 快速失败机制&#xff08;fail-fast&#xff09;for-each删除元素为什么报错原因分析逻辑分析 如何正确的删除元素remove 后 breakfor 循环使用 Iterator 总结 快速失败机制&#xff08;fail-fast&#xff09; In systems design, a fail-fast system is one which i…

ubnutu20.04-vscode安装leetcode插件流程

1.在vscode插件商城选择安装leetcode 2.安装node.js 官网下载一个版本安装流程&#xff1a; ①tar -xvf node-v14.18.0-linux-x64.tar.xz ①sudo ln -s /app/software/nodejs/bin/npm /usr/local/bin/ ②ln -s /app/software/nodejs/bin/node /usr/local/bin/ 查看版本&…

【vue3|第15期】Vue3模板语法入门指南

日期:2024年7月2日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083…

sql-语句

文章目录 SQL语句的学习sql是什么sql的内置命令sql的种类sql mode库&#xff0c;表属性介绍&#xff1a;字符集&#xff0c;存储引擎列的数据类型&#xff1a;数字&#xff0c;字符串&#xff0c;时间列的约束DDL: 数据定义语言库表 Online DDL(ALGORITHM) *DML :数据操纵语言资…

如何在Lazada平台快速出单?测评助力商家突破销量瓶颈

Lazada在短短的几年里已经发展成了东南亚地区最大的在线购物网站之一 &#xff0c;很多商家也想要在这样一个大的跨境平台上发展。那么&#xff0c;对于希望在Lazada平台上大展拳脚的商家而言&#xff0c;出单是否容易呢? ​一、Lazada出单容易吗? Lazada出单的难易程度并非…

Linux运维之需掌握的基本Linux命令

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、SHELL 二、执行命令 三、常用系统工作命令 四、系统状态检测命令 五、查找定位文件命令 六、文本文件编辑命令 七、文件目录管理命令…

一篇轻松上手 Xorbits库让大规模数据处理更简单.

Xorbits 是一个用于大规模数据处理和计算的 Python 库,旨在提供高效、灵活的分布式计算框架.它类似于Dask 和 Apache Spark,允许用户使用简单的 Python 代码处理大规模数据集. 安装 Xorbits pip install xorbits以下是一个简单的示例,演示如何使用 Xorbits 进行基本的数据处…