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

MD5加密和注册页面的编写

 MD5加密

1.导入包

npm install --save ts-md5

2.使用方式

import { Md5 } from 'ts-md5';
//md5加密后的密码
const md5Pwd=Md5.hashStr("123456").toUpperCase();

遇见的问题及用到的技术 

 

 

 

注册页面

register.vue代码

<template><div class="wapper"><el-card style="max-width: 480px"><template #header><div class="card-header"><span>欢迎登录</span></div></template><el-form ref="formRef" :model="FormData" :rules="rules" label-width="auto" status-icon> <el-form-item label="邮箱" prop="email"><el-input v-model="FormData.email" /></el-form-item><el-form-item label="电话" prop="tel"><el-input v-model="FormData.tel" /></el-form-item><el-form-item label="验证码" prop="code"><el-row :gutter="20"><el-col :span="15"> <el-input v-model="FormData.code" /></el-col><el-col :span="6"> <el-button type="primary" @click="sendCode">发送验证码</el-button></el-col></el-row></el-form-item><el-form-item label="密码" prop="password"><el-input v-model="FormData.password" /></el-form-item><el-form-item label="确认密码" prop="password1"><el-input v-model="FormData.password1" /></el-form-item><el-form-item label="昵称" prop="nackName"><el-input v-model="FormData.nackName" /></el-form-item><el-form-item class="btn-box"><el-button type="primary" @click="submitForm(formRef)">注册</el-button><!-- 重置表单 --><el-button @click="resetForm(formRef)">重置</el-button></el-form-item></el-form><template #footer>已有账号,去登录 <span> </span><el-button type="success">登录</el-button></template></el-card></div></template><script setup lang="ts">
import { reactive,ref } from 'vue';
import { userApi } from '@/api/index';
import { ElMessage } from 'element-plus';
import {useRoute,useRouter} from 'vue-router';
import { Md5 } from 'ts-md5';const route = useRoute()
const router = useRouter()const formRef = ref()const FormData = reactive({tel: '',email: '',code:'',password: '',password1: '',nackName: '',})//表单验证规则,表单中的prop属性
const rules = reactive<any>({tel: [{ required: true, message: '请输入手机号', trigger: 'blur' },{ pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/, message: '手机号格式错误', trigger: 'blur' },],code: [{ required: true, message: '请输入验证码', trigger: 'blur' },{ pattern: /^\d{4}$/, message: '验证码为4位数字', trigger: 'blur' },],password: [{ required: true, message: '请输入密码', trigger: 'blur' },{ pattern: /^[a-zA-Z]\w{5,17}$/, message: '密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)', trigger: 'blur' },],password1: [{ required: true, message: '请确认密码', trigger: 'blur' },{ pattern: /^[a-zA-Z]\w{5,17}$/, message: '密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)', trigger: 'blur' },],email: [{ required: true, message: '请输入邮箱地址', trigger: 'blur' },{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }],
})//发送手机验证码
const sendCode = () => {if (FormData.tel == "") {ElMessage.error("请输入手机号")return}userApi.sendCodeTel.call({tel:FormData.tel}).then((res: any) => {ElMessage.success("验证码发送成功")})
}//点击注册后调用的被抽出来的方法
const submitFormData = () => {if(FormData.password != FormData.password1){ElMessage.error("两次输入密码不一致")return}//使用MD5对密码进行加密const md5Pwd=Md5.hashStr(FormData.password).toUpperCase();//传入后端的参数let params = {tel: FormData.tel,email: FormData.email,password:md5Pwd ,nickName: FormData.nackName,code:FormData.code,}userApi.register.call(params).then((res: any) => {ElMessage.success("注册成功")router.push({ name: "login" })})console.log(FormData)}//点击注册按钮后
const submitForm = async (formEl: any) => {await formEl.validate((valid: any, fields: any) => {if (valid) {    //抽出来方法来数据提交后submitFormData()}})
}// 重置表单
const resetForm = (formEl: any) => {if (!formEl) returnformEl.resetFields()
}
</script><style>
.wapper {height: 100vh;background-color: antiquewhite;display: flex;justify-content: center;align-items: center;
}.btn-box {padding-left: 25%;
}
</style>

 路由

 

使用Api时每次都要导入 

 

封装了一下

 使用时

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Vue3】export, import, export default
  • 编程语言及系统发展:探索计算世界的演进之旅
  • 模板方法模式的实现
  • 昇思25天学习打卡营第17天|基于MobileNetv2的垃圾分类
  • 标签印刷检测,如何做到百分百准确?
  • mysql中select语句的执行顺序
  • 全网最炸裂的5款SD涩涩模型!身体真的是越来越不好了!建议收藏,晚上自己偷偷打开看!
  • p14数组(2)
  • CSS 【实用教程】(2024最新版)
  • 电商出海第一步,云手机或成重要因素
  • 本地部署私人知识库的大模型!Llama 3 + RAG!
  • 通用代码生成器模板体系,域对象,枚举和动词算子
  • UCOS-III 与UCOS-III主要功能差异
  • STM32的Code、RO-data、RW-data、ZI-data和RAM以及flash的关系
  • Spring AOP 基础知识
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 10个最佳ES6特性 ES7与ES8的特性
  • MySQL的数据类型
  • Python十分钟制作属于你自己的个性logo
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue-cli3搭建项目
  • 程序员最讨厌的9句话,你可有补充?
  • 从tcpdump抓包看TCP/IP协议
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 对JS继承的一点思考
  • 分布式事物理论与实践
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 前端面试题总结
  • 前端之React实战:创建跨平台的项目架构
  • 使用common-codec进行md5加密
  • 算法-图和图算法
  • 微信小程序开发问题汇总
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 通过调用文摘列表API获取文摘
  • ​Redis 实现计数器和限速器的
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #pragam once 和 #ifndef 预编译头
  • #QT(串口助手-界面)
  • #VERDI# 关于如何查看FSM状态机的方法
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (~_~)
  • (1)虚拟机的安装与使用,linux系统安装
  • (20050108)又读《平凡的世界》
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (27)4.8 习题课
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (void) (_x == _y)的作用
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (黑马点评)二、短信登录功能实现
  • (十)c52学习之旅-定时器实验
  • (一)appium-desktop定位元素原理
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失