当前位置: 首页 > news >正文

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

安装依赖

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;}});},// 登录获取tokendoLogin() {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实现好看的登录界面

相关文章:

  • Spring AI 1.0.0 新变化,从 0.8.1 如何升级
  • 标准库STL
  • day02-统计数据
  • 专题二:Spring源码编译
  • 华为机试HJ12字符串反转
  • 【UE5.3】笔记7 控制Pawn移动
  • pytorch自适应的调整特征图大小
  • LLM - 模型历史
  • 软件测试面试200问【答案+文档】
  • Android Enable 和clickable
  • 鸿蒙小案例-自定义键盘
  • # 职场生活之道:善于团结
  • 【面试题】网络IO多路复用模型之异步事件
  • 【3分钟准备前端面试】vue3
  • 【test】小爱同学通过esp32控制电脑开关
  • 网络传输文件的问题
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [译] 怎样写一个基础的编译器
  • bearychat的java client
  • CentOS7简单部署NFS
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • express如何解决request entity too large问题
  • flask接收请求并推入栈
  • JS字符串转数字方法总结
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Swoft 源码剖析 - 代码自动更新机制
  • 番外篇1:在Windows环境下安装JDK
  • 京东美团研发面经
  • 每天10道Java面试题,跟我走,offer有!
  • 十年未变!安全,谁之责?(下)
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 责任链模式的两种实现
  • 主流的CSS水平和垂直居中技术大全
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​Java基础复习笔记 第16章:网络编程
  • #if和#ifdef区别
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (三)elasticsearch 源码之启动流程分析
  • (原)本想说脏话,奈何已放下
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .gitattributes 文件
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET MVC之AOP
  • .Net Remoting常用部署结构
  • .net经典笔试题
  • .NET设计模式(8):适配器模式(Adapter Pattern)