位置: 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组 原题与详解(第十四届蓝桥杯大赛官网)

  • 华为mate30慢放怎么只有32倍(华为mate30pro的慢动作怎么用)

    华为mate30慢放怎么只有32倍(华为mate30pro的慢动作怎么用)

  • 小米mix3怎么关闭手机提示音(小米MIX3怎么关闭usb充电模式)

    小米mix3怎么关闭手机提示音(小米MIX3怎么关闭usb充电模式)

  • 点开别人的微信为什么没有朋友圈(点开别人的微信却看不到朋友圈入口)

    点开别人的微信为什么没有朋友圈(点开别人的微信却看不到朋友圈入口)

  • 支付宝账号在哪里看(淘宝的支付宝账号在哪)

    支付宝账号在哪里看(淘宝的支付宝账号在哪)

  • 徕卡q照片怎么导入手机(徕卡q照片怎么导入苹果手机)

    徕卡q照片怎么导入手机(徕卡q照片怎么导入苹果手机)

  • 芒果tv投屏无法快进(芒果tv为啥投屏不了)

    芒果tv投屏无法快进(芒果tv为啥投屏不了)

  • Word标题段填充颜色怎么设置(word标题段落填充)

    Word标题段填充颜色怎么设置(word标题段落填充)

  • 手机进水了声音变沙哑怎么办(手机进水了声音滋滋啦啦的)

    手机进水了声音变沙哑怎么办(手机进水了声音滋滋啦啦的)

  • pro版本是什么意思(pro vl是什么版本)

    pro版本是什么意思(pro vl是什么版本)

  • 抖音不够1000粉丝怎么开橱窗(抖音不够1000粉丝可以挂小黄车)

    抖音不够1000粉丝怎么开橱窗(抖音不够1000粉丝可以挂小黄车)

  • 苹果6s电池容量多少(苹果6s电池容量8000多毫安是真的吗)

    苹果6s电池容量多少(苹果6s电池容量8000多毫安是真的吗)

  • opporeno2和renoz的区别(opporeno2和opporenoz哪个好)

    opporeno2和renoz的区别(opporeno2和opporenoz哪个好)

  • 助听器兼容性是啥(助听器兼容性是什么)

    助听器兼容性是啥(助听器兼容性是什么)

  • 华为手机通知管理能关闭吗(华为手机通知管理怎么关闭声音)

    华为手机通知管理能关闭吗(华为手机通知管理怎么关闭声音)

  • 云之家怎么加入公司团队(云之家怎么加入团队)

    云之家怎么加入公司团队(云之家怎么加入团队)

  • 手机电子书怎么下载(手机电子书怎么打印出来)

    手机电子书怎么下载(手机电子书怎么打印出来)

  • 宾馆订后砍五折啥意思(酒店5折砍价)

    宾馆订后砍五折啥意思(酒店5折砍价)

  • soul怎么看对方是否在线(soul怎么看对方在不在线)

    soul怎么看对方是否在线(soul怎么看对方在不在线)

  • findx是多少瓦快充(oppo find x多少瓦)

    findx是多少瓦快充(oppo find x多少瓦)

  • 美团评论第二天才能看到吗(美团评论第二天才能看到怎么开启歇业保护)

    美团评论第二天才能看到吗(美团评论第二天才能看到怎么开启歇业保护)

  • whatsapp用不了怎么办(whatsapp怎么不能用了)

    whatsapp用不了怎么办(whatsapp怎么不能用了)

  • qq的钱怎么转微信不用银行卡(qq的钱怎么转微信钱包)

    qq的钱怎么转微信不用银行卡(qq的钱怎么转微信钱包)

  • 华为mate20怎么进行分屏操作(华为mate20怎么进入工程菜单)

    华为mate20怎么进行分屏操作(华为mate20怎么进入工程菜单)

  • 华为灭屏显示时间怎么设置(华为灭屏显示时间怎么开启)

    华为灭屏显示时间怎么设置(华为灭屏显示时间怎么开启)

  • LayUI—tree树形结构的使用解析(layui 树形)

    LayUI—tree树形结构的使用解析(layui 树形)

  • 增值税进项发票当月未开,怎么办
  • 企业其他税负率计算公式?
  • 初级税务师什么时候报名
  • 企业所得税如何申报操作
  • 资金账簿印花税每年都要交吗?
  • 印花税的申报依据是什么
  • 补贴收入属于什么分配
  • 怎么从税控系统导出明细
  • 电子发票会自动发送到邮箱吗
  • 公司注销投资款退回给股东,附言写什么
  • 收到赔偿款怎么做分录
  • 增值税会计核算设置的会计科目有哪些
  • 发票种类和适用范围
  • 以银行存款支付水电费
  • 发票对方认证不了怎么回事
  • 纳税人签章填什么
  • 银行和保险公司归哪个部门管
  • 所有利息收入都免税吗
  • 实收资本何时交税
  • 公对公转账备注信息填错了怎么办
  • 子公司销售给母公司商品
  • 保证金计入哪个会计科目
  • 发票打错了重新打要交税吗
  • 企业所得税的工资薪金包括社保
  • mac怎么还原出厂设置
  • 应付职工薪酬年底怎么结转
  • 怎么加入win11预览计划
  • 成本加成定价法包括()
  • 收到工会经费怎样做账
  • 车辆拍卖怎么过户
  • window10总是自动开机
  • 如何加快身体的新陈代谢
  • 电脑如何设置屏幕常亮
  • php string函数
  • 内部收益率如何计算例题
  • 注册造价师挂靠费如何缴个税?
  • 排灯节起源
  • 用抵扣券买了东西可以退吗
  • 关于古老的jsp页面的知识汇总(超详细)
  • inotify_event
  • python魔法方法详解
  • 申报完成后怎么处理
  • 不同情况不同处理的句子
  • 实发工资总额怎么算
  • 发票金额大于付款金额怎么做分录
  • 帝国cms自动推送插件
  • 银行托管账户的规定有哪些
  • 银行贷款第三方是什么意思
  • 一次性伤残补助金怎么计算
  • 高新技术企业的申报条件
  • 出口退税没有及时申报
  • 企业股权融资方式有哪些
  • 库存商品暂估入库是什么意思
  • 固定资产累计折旧会计科目
  • 帮别的公司付款后发票该给谁开
  • 什么是无形资产包括哪些
  • 超出工资总额
  • 长期待摊费用如何结转
  • 会计记账科目表
  • 会计循环属于什么流程
  • mysql怎么修改my.ini
  • bios怎么更改硬盘格式
  • windows安装orthofinder
  • win8和win10双系统切换
  • 修改linux系统用户密码
  • 浅谈一下新冠的好处
  • unity中
  • js旋转函数
  • js如何显示日期和时间
  • 关于ie浏览器下面说法正确的是
  • Android UI之TableLayout(表格布局)
  • fiori开发
  • java 视频教程
  • jquery弹出窗口
  • python日志文件
  • android菜鸟教程
  • 医院体检怎么拿发票
  • 宁波国税局领导名单
  • 机关工勤人员2022工资套改表
  • 腾讯 短信服务
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设