vue登录 滑动验证,记住密码及AES加密解密

 相关依赖

npm install js-cookie  //js-cookie
npm install crypto-js  //AES加密解密
npm install -S vue-puzzle-vcode  //滑动验证
<template><div class="login"><div class="login-box"><!-- 标题 --><div class="imgbox"><h2>安检设备管理系统</h2></div><!-- 表单 --><el-formref="ruleForm":rules="loginrules"label-width="0px"class="login-form":model="loginForm"><!-- 账号 --><el-form-item prop="username"><el-inputprefix-icon="el-icon-user"v-model="loginForm.username"placeholder="请输入账号"></el-input></el-form-item><!-- 密码 --><el-form-item prop="password"><el-inputprefix-icon="el-icon-lock"v-model="loginForm.password"placeholder="请输入密码"show-password></el-input></el-form-item><!-- 记住密码 --><el-checkbox v-model="isRemenber">记住密码</el-checkbox><!-- 按钮 --><el-form-item class="btns"><el-button type="primary" @click="login">登录</el-button><el-button type="info" @click="reset">重置</el-button></el-form-item></el-form></div><!-- 滑动验证功能 --><Vcode:show="isVcodeShow"@success="successFn"@close="isVcodeShow = false"/></div>
</template><script>
//   import { openLoading, closeLoading } from "@/components/loading";
import Vcode from "vue-puzzle-vcode";
import axios from "axios";
import Cookies from "js-cookie";
import CryptoJS from "crypto-js";export default {components: {Vcode,},data() {return {isRemenber: false, //记住密码isVcodeShow: false, // 验证码模态框是否出现//表单输入框loginForm: {username: "",password: "",},//表单验证loginrules: {username: [{ required: true, message: "请输入账号", trigger: "blur" },{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },],password: [{ required: true, message: "请输入密码", trigger: "blur" },{min: 6,max: 15,message: "长度在 6 到 15 个字符",trigger: "blur",},],},};},created() {this.init();},methods: {init() {const userInformation = Cookies.get("userInformation")? Cookies.get("userInformation"): "";if (userInformation) {// 对密码进行解密this.loginForm = this.EncryptionDecryption(false, userInformation);// 将是否记住密码置为truethis.isRemenber = true;} else {this.loginForm = {username: "",password: "",};}},//重置按钮reset() {//resetFields 重置为初始值this.$refs.ruleForm.resetFields();},//点击登录login() {//表单预验证//validate对表单进行验证第一个参数是布尔值 第二个参数是对象this.$refs.ruleForm.validate((valid) => {if (!valid) return;this.isVcodeShow = true;});},// 用户通过了验证successFn() {this.isVcodeShow = false; // 通过验证后,需要手动隐藏模态框// openLoading();this.callHttp();},async callHttp() {//   const { data: res } = await this.$http.post(//     `system/ssologin/Login?username=${this.loginForm.username}&password=${this.loginForm.password}`,//     {}//   );//   if (res.msg !== "登录成功") {//     //   closeLoading();//     return this.$message.error("登录失败,账号或密码不正确");//   }//   this.$message.success("登录成功");// 登录成功后 判断是否选择了勾选密码if (this.isRemenber) {//将信息加到cookieCookies.set("userInformation",this.EncryptionDecryption(true, this.loginForm),{expires: 30, // 存储30天});} else {// 删除cookieCookies.remove("userInformation");}//将token加到cookies//   Cookies.set("token", res.data.token, {//     expires: 30, // 存储30天//   });//   // closeLoading();//   //跳转到home页面//   this.$router.push("/home");},//加密解密方法EncryptionDecryption(isShow, data) {//秘钥let aesKey = "e10adc3949ba59abbe56e057f20f883e";//将秘钥转换成Utf8字节数组let key = CryptoJS.enc.Utf8.parse(aesKey);// 加密参数const option = {iv: CryptoJS.enc.Utf8.parse(aesKey.substr(0, 16)),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7,};if (isShow) {//加密let encrypt = CryptoJS.AES.encrypt(JSON.stringify(data), key, option);let encryptData = encrypt.toString();return encryptData;} else {//解密let decrypt = CryptoJS.AES.decrypt(data, key, option);let decryptData = JSON.parse(decrypt.toString(CryptoJS.enc.Utf8)); //解密后的数据return decryptData;}},},
};
</script><style lang="less" scoped>
.login {width: 100%;height: 100%;// background-image: url(../assets/veer-157272718.jpg);// background-repeat: no-repeat;// background-size: 100% 100%;
}
.login-box {width: 450px;height: 300px;background-color: white;border-radius: 5px;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);border-radius: 20px;.imgbox {text-align: center;}
}.login-form {position: absolute;bottom: 0;width: 100%;padding: 0px 25px;box-sizing: border-box;
}.btns {display: flex;justify-content: flex-end;
}
</style>

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows2012MySQL的安装与配置【详细教程】

目录 一.mysql5.7安装与配置 二.安装MySQL8.0 三.向日葵远程操作工具 3.1.介绍 3.2.常见的使用场景 3.3.使用方法 好啦今天就到这里了&#xff01;&#xff01;&#xff01;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.mysql5.7安装与配置 首先把你的虚拟机打…

DevOps系列 之 Python与Java互相调用的案例

Python和Java是两种非常流行的编程语言。Python是一种解释型语言&#xff0c;而Java则是一种编译型语言。两者都有广泛的应用&#xff0c;尤其是在测试领域。在本文中&#xff0c;我们将讨论如何使用Python测试Java源代码&#xff0c;Java如何调用Python脚本。 单元测试 单元…

C++八股学习心得.2

1.C常量 常量是固定值&#xff0c;在程序执行期间不会改变。这些固定的值&#xff0c;又叫做字面量。 常量可以是任何的基本数据类型&#xff0c;可分为整型数字、浮点数字、字符、字符串和布尔值。 常量就像是常规的变量&#xff0c;只不过常量的值在定义后不能进行修改。 …

vue保姆级教程----深入了解Vuex的工作原理

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 双闭环PI控制器设计 4.2 SVPWM技术 4.3 控制系统实现 5.完整工程文件 1.课题概述 基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真。系统包括逆变桥、PMSM、park变换、clark变换、SVPWM、PI控…

点云体素化

文章目录 环境&#xff1a;1.1 体素化介绍&#xff1a;2.1 python代码3.1 可视化 环境&#xff1a; Open3D 1.1 体素化介绍&#xff1a; 用一个个小体素去占据点云 2.1 python代码 conda activete deeplabv3plus(环境名称–安装好open3D的) python demo.py import open3d a…

AILDL详解

AIDL&#xff08;Android接口描述语言&#xff09;是一个IDL&#xff08;Interactive Data Language/交互式数据语言&#xff09;语言&#xff0c;它可以生成一段代码&#xff0c;可以是一个在Android设备上运行的两个进程使用内部通信进程进行交互。 如果你想在一个安卓程序/…

【vue/uniapp】pdf.js 在一些型号的手机上不显示

引入&#xff1a; uniapp 项目通过 pdf.js 来在线浏览 pdf 链接&#xff0c;在微信小程序中都显示正常&#xff0c;但是通过 app 跳转小程序&#xff0c;在苹果、小米显示正常&#xff0c;但是华为和 oppo 就不显示&#xff0c;可以通过降 pdf.js 的版本来解决这个问题。 解决&…

three.js 多通道组合

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div style"border: 1px so…

c语言和python区别哪个难,c语言和python区别大不大

大家好&#xff0c;给大家分享一下c语言和python区别主要用来写什么&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; Python可以说是目前最火的语言之一了&#xff0c;人工智能的兴起让Python一夜之间变得家喻户晓&#xff0c;Python号称目…

YOLOv8改进 | 检测头篇 | DynamicHead原论文一比一复现 (不同于网上版本,全网首发)

一、本文介绍 本文给大家带来的改进机制是DynamicHead(Dyhead),这个检测头由微软提出的一种名为“动态头”的新型检测头,用于统一尺度感知、空间感知和任务感知。网络上关于该检测头我查了一些有一些魔改的版本,但是我觉得其已经改变了该检测头的本质,因为往往一些细节上才…

day03 移除链表元素 设计链表 反转链表

题目1&#xff1a;203 移除链表元素 题目链接&#xff1a;203 移除链表 题意 删除链表中所有满足Node.valval的节点 返回新的头节点 注意使用cur临时指针&#xff0c;遍历链表&#xff0c;这样才可以最终返回head&#xff0c;不可以拿着head去遍历&#xff0c;否则&#…