位置: IT常识 - 正文

vue2+element-plus 密码校验及动态校验

编辑:rootadmin
vue2+element-plus 密码校验及动态校验 应用场景

推荐整理分享vue2+element-plus 密码校验及动态校验,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

团队想给新系统的新建/修改用户、个人设置的修改密码中的密码输入框加一个密码校验。具体加什么校验,产品参考了几个增加密码复杂度的校验,比如不能输入连续的3个数字,这种校验,但是好像密码的复杂度并不能保证系统的安全性,好像邮箱验证会比较安全?虽然密码只防君子不妨小人,但是设置密码校验也只是避免用户输入过于简单的密码,比如:123,123456,111111这种。

针对我们这个项目,我们的密码校验规则是:

包含英文字母大小写、数字和特殊符号且在8到16位的任意组合

开发流程分析

首先我有三个场景需要设置密码:

1.个人设置——修改密码:旧密码、新密码、重复密码(3个输入框)

2.用户管理——新建用户:密码、重复密码(2个输入框)

3.用户管理——修改用户:重置密码(1个输入框)

针对三个不同环境,划分一下,分别是需要以下校验:

新密码与旧密码,不能重复新密码/密码 与重复密码,必须一致重置密码、新密码、密码,必须校验正则以上输入框也要校验输入的字符必须在8—16个字符之间并且由于新建和修改用户用的同一个表单,涉及动态展示校验规则vue2+element-plus 密码校验及动态校验

以上是对于需求的确定,关于开发,由于涉及两个页面,分别从个人设置和用户管理,分析具体的代码逻辑。

 详细开发场景1.个人设置——修改密码<el-form ref="passwdForm" :model="passwd" label-width="100px" style="margin: 16px" :rules="rules" size="default"> <el-form-item prop="oldVal" label="旧密码"> <el-input v-model.trim="passwd.oldVal" type="password" show-password placeholder="请输入旧密码"></el-input> </el-form-item> <el-form-item prop="newVal" label="新密码"> <el-input v-model.trim="passwd.newVal" type="password" show-password placeholder="请输入包含英文字母大小写、数字和特殊符号的 8-16 位组合" ></el-input> </el-form-item> <el-form-item prop="repeatNewVal" label="重复密码"> <el-input v-model.trim="passwd.repeatNewVal" type="password" show-password placeholder="请重复密码" ></el-input> </el-form-item> <div style="width: 100%; height: 40px"> <el-button style="float: right; margin: 4px" @click="$refs['passwdForm'].resetFields()">清空</el-button> <el-button type="primary" style="float: right; margin: 4px" @click="onSubmit">确定</el-button> </div> </el-form> data() {//新密码与重复密码不一致,一定写在data里但不是return里 let repeatValidate = (rule, value, callback) => { if (value !== this.passwd.newVal) { callback(new Error('两次输入密码不一致!')) } else { callback() } }//正则校验主要是这部分:/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[._~!@#$^&*])[A-Za-z0-9._~!@#$^&*]{8,16}$//其中特殊字符包括:._~!@#$^&* (比较常见) let newValValidate = (rule, value, callback) => { if (value === this.passwd.oldVal) { callback(new Error('新密码不能与旧密码一致')) } else if (/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[._~!@#$^&*])[A-Za-z0-9._~!@#$^&*]{8,16}$/g.test(value)) { callback() } else { callback(new Error('请输入包含英文字母大小写、数字和特殊符号的 8-16 位组合')) } } return { passwd: { oldVal: '', newVal: '', repeatNewVal: '' }, showPasswdChange: false, rules: { oldVal: [{ required: true, message: '请输入旧密码', trigger: 'blur' }], newVal: [ { required: true, message: '新密码不能为空', trigger: 'blur' }, { min: 8, max: 16, message: '长度应在 8 到 16 个字符', trigger: 'blur' }, { validator: newValValidate, trigger: 'blur' } ], repeatNewVal: [ { required: true, message: '请再输入一遍新密码', trigger: 'blur' }, { validator: repeatValidate, trigger: 'blur' } ] }}

实现效果,如下:

 

2.用户管理——新建/修改用户 

这里新建用户的时候,有密码和重复密码两个输入框,这是必填项

但是修改用户的时候,只展示重置密码的输入框,并且 不是必填项,所以这个输入框的rules里面的 required: true,这个就去掉。

//新建用户——新密码、重复密码 <el-form-item label="密码" prop="userPasswd" v-if="!seeEnable && !editEnable"> <el-input v-model.trim="userInfo.userPasswd" show-password placeholder="请输入包含英文字母大小写、数字和特殊符号的 8-16 位组合" ></el-input> </el-form-item> <el-form-item label="重复密码" prop="userPasswdRe"> <el-input v-model.trim="userInfo.userPasswdRe" show-password placeholder="请重复密码"></el-input></el-form-item>//修改用户——重置密码<el-form-item v-if="editEnable" label="重置密码" prop="userPasswdReset"> <el-input v-model="userInfo.userPasswdReset" show-password placeholder="请输入包含英文字母大小写、数字和特殊符号的 8-16 位组合" ></el-input></el-form-item>data(){ /* *@description:重复密码校验 *@date: 2022-07-14 15:25:12 */ let checkPasswdRe = (rule, value, callback) => { if (value === '') { callback(new Error('请再次输入密码')) } else if (value !== this.userInfo.userPasswd) { callback(new Error('两次输入密码不一致!')) } else { callback() } } //密码校验 let newValValidate = (rule, value, callback) => { if (/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[._~!@#$^&*])[A-Za-z0-9._~!@#$^&*]{8,16}$/g.test(value)) { callback() } else { callback(new Error('请输入包含英文字母大小写、数字和特殊符号的 8-16 位组合')) } }//重置密码校验 let checkPasswdReset = (rule, value, callback) => { if (!value) { return callback() } else { if (/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[._~!@#$^&*])[A-Za-z0-9._~!@#$^&*]{8,16}$/g.test(value)) { callback() } else { callback(new Error('请输入包含英文字母大小写、数字和特殊符号的 8-16 位组合')) } } } return { seeEnable: true, //查看 editEnable: false, //修改用户信息时展示重置密码 userInfo: { nickName: '', userPasswd: '', userPasswdRe: '', phone: '', userPasswdReset: '' }, rules: { userPasswd: [ { required: true, message: '密码不能为空', trigger: 'blur' }, { min: 8, max: 16, message: '长度应在 8 到 16 个字符', trigger: 'blur' }, { validator: newValValidate, trigger: 'blur' } ], userPasswdRe: [ { required: true, validator: checkPasswdRe, trigger: 'blur' } ], userPasswdReset: [ { min: 8, max: 16, message: '长度应在 8 到 16 个字符', trigger: 'change' }, { validator: checkPasswdReset, trigger: 'change' } ] }}

实现效果如下:

 

3.关于提交——校验 async editSubmitForm() { this.$refs['ruleForm'].validate(async (valid) => { if (valid) { //提交操作 } })},总结/分析:

密码校验,只是表单经常校验的一类,之前遇到select的校验,经常会遇到一打开弹窗,表单的校验就出现的bug,这是由于数据的初始化中的结构和select获取的数据结构不一致的原因,这里也记录一下。

以上就是关于密码校验的开发,其实密码校验还有很多常见的正则类型,比如:

密码包含字母、数字组成,区分大小写的8-18位组合:^(?=.*[a-zA-Z])(?=.*[0-9])[A-Za-z0-9]{8,18}$

记录over。

本文链接地址:https://www.jiuchutong.com/zhishi/290181.html 转载请保留说明!

上一篇:在大运河上举办的赛船节, 意大利威尼斯 (© Alexander Duffner/Alamy)(在大运河上举办什么活动)

下一篇:第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解(第十四届蓝桥杯大赛官网)

  • SEO未来的发展趋势和前景(seo发展方向)

    SEO未来的发展趋势和前景(seo发展方向)

  • 小米手表无法定位(小米手表无法定位城市)

    小米手表无法定位(小米手表无法定位城市)

  • win10相机打不开摄像头(win10相机打不开提示其它应用正在使用相机)

    win10相机打不开摄像头(win10相机打不开提示其它应用正在使用相机)

  • 什么软件可以拼视频 (什么软件可以拼接图片)

    什么软件可以拼视频 (什么软件可以拼接图片)

  • 极速退款为什么突然没有了(极速退款为什么不退款)

    极速退款为什么突然没有了(极速退款为什么不退款)

  • qq群昵称改不了怎么回事(qq群昵称改不了怎么回事儿呀)

    qq群昵称改不了怎么回事(qq群昵称改不了怎么回事儿呀)

  • 拼多多发货延时多久罚款(拼多多发货延时什么意思)

    拼多多发货延时多久罚款(拼多多发货延时什么意思)

  • 106903290212367发送失败(1069070069发送gh)

    106903290212367发送失败(1069070069发送gh)

  • 苹果x屏幕模糊怎么调(苹果x显示效果模糊)

    苹果x屏幕模糊怎么调(苹果x显示效果模糊)

  • 京东取消处理中要多久(京东订单取消处理中要多久)

    京东取消处理中要多久(京东订单取消处理中要多久)

  • 苹果11有256G吗(苹果11256g二手卖多少钱)

    苹果11有256G吗(苹果11256g二手卖多少钱)

  • 微信卸载了聊天记录还在吗(微信卸载了聊天记录没了怎么恢复)

    微信卸载了聊天记录还在吗(微信卸载了聊天记录没了怎么恢复)

  • 时序逻辑电路的基本单元是什么(时序逻辑电路的设计实验报告)

    时序逻辑电路的基本单元是什么(时序逻辑电路的设计实验报告)

  • autocad是应用软件吗(autocad软件属于什么应用软件)

    autocad是应用软件吗(autocad软件属于什么应用软件)

  • 手机丢了照片怎么找回来(手机丢了照片怎么恢复)

    手机丢了照片怎么找回来(手机丢了照片怎么恢复)

  • 一加7T Pro怎么关闭振动(一加7pro如何关闭volte)

    一加7T Pro怎么关闭振动(一加7pro如何关闭volte)

  • 如何做好淘宝店铺的运营工作(如何做好淘宝店电子书)

    如何做好淘宝店铺的运营工作(如何做好淘宝店电子书)

  • 路由器自己可以安装吗(路由器自己可以改密码吗)

    路由器自己可以安装吗(路由器自己可以改密码吗)

  • 华为m30和pro有什么不同(华为m30pro和p30pro哪个好)

    华为m30和pro有什么不同(华为m30pro和p30pro哪个好)

  • 淘宝店铺封了钱去哪了(淘宝店铺封了钱还给嘛)

    淘宝店铺封了钱去哪了(淘宝店铺封了钱还给嘛)

  • 绿钻到期后下载的音乐还能听吗(绿钻到期后下载的vip音乐怎么听)

    绿钻到期后下载的音乐还能听吗(绿钻到期后下载的vip音乐怎么听)

  • m1901f7e是什么型号(m1901f7e是什么型号多少钱价格)

    m1901f7e是什么型号(m1901f7e是什么型号多少钱价格)

  • 企业为什么需要做微信开发(企业为什么需要法律顾问)

    企业为什么需要做微信开发(企业为什么需要法律顾问)

  • jpg格式怎么缩小到200k以下(jpg格式怎么缩小内存)

    jpg格式怎么缩小到200k以下(jpg格式怎么缩小内存)

  • 投资性房地产公允价值变动
  • 两处取得工资的成语
  • 法人购买车险发票怎么开
  • 一般纳税人9个点可以抵扣吗
  • 实验室报销发票
  • 生产成本月末转到哪里
  • 企业所得税的常设机构
  • 什么叫企业过桥资金
  • 什么样的情况可以补缴社保
  • 违约金的涉税处理
  • 湿租增值税税率多少
  • 公司从事房地产有什么好名字
  • 增值税税率变动情况
  • 公司商品质量问题导致员工与公司一起被起诉了怎么办
  • 月末在产品直接人工成本怎么算
  • 车辆保险返点计算器
  • 建账时选择什么会计制度
  • 文件夹如何更改图标
  • 苹果设置输入法在哪里设置
  • 生产测试是指什么
  • 哪些情况需要补钙
  • 公司的职工教育是指什么
  • 哪些费用发票可以报销
  • 什么是BIOS设置界面
  • php上传进度条
  • 客户预付的购货款是收入吗
  • 如何发放年终奖 一个蒸蒸日上的公司,当
  • 将债务转为资本的,债务人应当将债权人
  • 捐赠支出算期间费用吗
  • 老板垫付的货款会计分录
  • 什么是跨域以及跨境电商
  • 其它收益和递延收益
  • 无进项开发票
  • typescript4.1
  • 2020注册谷歌账号方法
  • 华为od机试无法测用例
  • 关联企业之间业务往来如何定价
  • 新公司不开户需要交税吗
  • 房屋租赁发票品目填写规范
  • 发票上盖成财务章了怎么办
  • 电汇汇款方式的基本流程
  • 疫情期间制造费用账务处理
  • 应交税费应交增值税销项税额
  • 饭店开业多久可以正常
  • 进项税金抵扣
  • 房地产开发产品科目设置
  • 跨年取得的发票金额大于暂估金额
  • 交易性金融资产的账务处理
  • 实收资本现金入账怎么办
  • 期末留抵的进项税可以计入成本吗
  • 贸易公司退税计算方法选哪一种
  • 企业不如实申报个税的风险
  • 增值税进项税额属于什么科目
  • 派出所报销项目有哪些
  • 两个企业同一个法人
  • 暂估应付账款余额调整
  • 资产评估费怎么收
  • 待处理财产损益借贷方向
  • 手工现金日记账范本
  • 红字冲销法可能会涉及的摘要有
  • 复式记账法主要有
  • Linux设置jdk环境变量配置
  • windows xp windows
  • linux w
  • windowsxpsp3是什么版
  • linux bzz
  • 轻松掌握瓷砖铺贴技术 pdf
  • xbox无法连接无线网络
  • android中数据存储
  • 批处理注册reg文件
  • word-wrap在firefox中不起作用的解决方法
  • shell脚本怎么进入指定目录
  • js布局与css布局
  • javascript函数调用函数
  • 置顶是什么意思呢
  • 使用筷子就餐会不会传染乙肝病毒
  • js操作网页
  • js如何使用
  • 出口汇率以什么为准
  • 国家关于农村土地流转政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设