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

  • 微信怎么横屏(三星平板微信怎么横屏)

    微信怎么横屏(三星平板微信怎么横屏)

  • win10用户账户控制怎么取消(win10用户账户控制 管理员已阻止你运行此应用)

    win10用户账户控制怎么取消(win10用户账户控制 管理员已阻止你运行此应用)

  • nova4和nova4e的区别(nova4和nova4e的区别哪个好)

    nova4和nova4e的区别(nova4和nova4e的区别哪个好)

  • 可以在手机上写字的笔(可以在手机上写代码并运行的软件)

    可以在手机上写字的笔(可以在手机上写代码并运行的软件)

  • 美图秀秀油画特效在哪里(美图秀秀一键油画怎么p)

    美图秀秀油画特效在哪里(美图秀秀一键油画怎么p)

  • 来源验证消息什么意思(来自验证消息的好友来源)

    来源验证消息什么意思(来自验证消息的好友来源)

  • iphonex发热严重卡顿(iphoneX发热严重是什么原因)

    iphonex发热严重卡顿(iphoneX发热严重是什么原因)

  • 为什么秘乐不能发视频(秘乐怎么不能用了)

    为什么秘乐不能发视频(秘乐怎么不能用了)

  • ipad pro可以当电脑用吗(ipad pro可以当电脑吗)

    ipad pro可以当电脑用吗(ipad pro可以当电脑吗)

  • 学生怎么在钉钉里查看自己观看直播的时间(学生怎么在钉钉上网课)

    学生怎么在钉钉里查看自己观看直播的时间(学生怎么在钉钉上网课)

  • 三星手机为什么安装不了微信(三星手机为什么充不上电)

    三星手机为什么安装不了微信(三星手机为什么充不上电)

  • 群主怎么撤回超过两分钟的消息(群主怎么撤回超过两分钟的图片)

    群主怎么撤回超过两分钟的消息(群主怎么撤回超过两分钟的图片)

  • iphone7p经常闪退(iphone7p经常闪退怎么回事)

    iphone7p经常闪退(iphone7p经常闪退怎么回事)

  • qq相册怎么弄自己看不见(自己的qq相册怎么设置密码)

    qq相册怎么弄自己看不见(自己的qq相册怎么设置密码)

  • nova和荣耀的区别(nova 和荣耀哪个好一些?)

    nova和荣耀的区别(nova 和荣耀哪个好一些?)

  • mate30pro怎么拍摄夜景照片(mate30pro怎么拍摄微距)

    mate30pro怎么拍摄夜景照片(mate30pro怎么拍摄微距)

  • 京东必购码怎么弄(京东必购码怎么绑定)

    京东必购码怎么弄(京东必购码怎么绑定)

  • 华为手机拉黑后打电话有提示吗(华为手机拉黑后对方发短信显示什么)

    华为手机拉黑后打电话有提示吗(华为手机拉黑后对方发短信显示什么)

  • 哔哩哔哩视频怎么转成mp4(哔哩哔哩视频怎么保存到电脑)

    哔哩哔哩视频怎么转成mp4(哔哩哔哩视频怎么保存到电脑)

  • 红米手机重启开不了机(红米手机重启开不了机显示MI)

    红米手机重启开不了机(红米手机重启开不了机显示MI)

  • 12306怎么添加候补需求(12306怎么添加候补车辆)

    12306怎么添加候补需求(12306怎么添加候补车辆)

  • 小米note3听筒声音小怎么回事(小米note3听筒音量修复教程)

    小米note3听筒声音小怎么回事(小米note3听筒音量修复教程)

  • 朋友圈的视频怎么删除(朋友圈的视频怎么发到视频号)

    朋友圈的视频怎么删除(朋友圈的视频怎么发到视频号)

  • 技术干货 | 一文弄懂差分隐私原理!(技术knowhow)

    技术干货 | 一文弄懂差分隐私原理!(技术knowhow)

  • 进货开了发票也写了购销合同要交印花税吗?
  • 设计合同服务期限怎么写
  • 独资企业和公司的优缺点
  • 出租车手撕票可以换成增值税发票吗
  • 砖厂开票员的工作流程
  • 一般纳税人能否享受残保金优惠
  • 企业之间资金借贷需要交税吗
  • 出口货物进项税怎样处理
  • 股权转让1元转让
  • 异地开发房地产会一直待在那个城市吗
  • 企业临时外出经营如何使用发票
  • 建筑业营改增的主要内容
  • 个人独资企业的债务由谁承担
  • 承兑差额怎么做账
  • 劳务公司核定征收怎么交税的
  • 个人所得税中的股息红利应纳税额
  • 预付绩效工资是什么意思
  • 跨年的预付账款如何冲销
  • 利润表中所得税怎么算
  • 如何计算非居民用电量
  • 失控进项发票转出 补税做账
  • 考勤扣款是税前还是税后
  • 开专票必须公对公付款不然不开
  • 电商无发票成本怎么做账
  • 小规模纳税申报表下载
  • 文化事业建设费的征收范围
  • 开票金额与实际金额差5元
  • 车间办公费计入什么会计科目
  • 出纳备用金收支登记表怎么做
  • 现金流量表的编制依据
  • 预售房款预缴企税怎么算
  • 成品油属于什么费用
  • 小规模季度不超过30万的账务处理
  • php timestamp
  • 存货的核算方法
  • intempt
  • php addslashes函数
  • 房地产销售老项目增值税
  • php十进制转二进制算法
  • yii2框架从入门到精通pdf
  • 项目的分包行为是否合理
  • 盈余公积转增资本什么意思
  • javaweb实现用户登录注册
  • 十大经典排序算法(动图演示C 实现)
  • 前端程序员和后端程序员哪个工资高
  • 发票公司名字开错,需要更改红字发票上的名字吗
  • 企业做账会计分录流程
  • 申报财务报表利润怎么写
  • 赔偿客户款应该怎么记账
  • 保理融资费用账务处理
  • zabbix 网络监控
  • 抵扣联和发票联算一张发票吗
  • 待处理财产损益是什么意思
  • 律师跨省办案
  • 当月已经认证的发票可以取消认证吗
  • 资本金利润率正常范围
  • 进料料件复出可以给第三方吗
  • 包装物范围
  • 工程开票金额大写怎么写
  • 对公提现是什么意思啊
  • 年终建账于年初建账,在录入期初余额时有什么不一样?
  • mysql常见故障和解决方法
  • 苹果电脑安装了双系统怎么恢复苹果系统
  • u盘安装ubuntu找不到硬盘
  • 微软今天正式停产了吗
  • ubuntu 无法正常启动
  • win10企业版教育版专业版哪个好
  • win10内置杀毒
  • jquery跟随鼠标移动
  • python中list的用法例子
  • AutoPainting
  • js判断鼠标位置是否在元素区域内使用
  • node.js使用mysql
  • python查找字符串中指定字符的个数
  • recyclerview和scrollview
  • javascript实现2016新年版日历
  • 定额发票属于什么类型
  • 简述纳税人与负税的区别
  • 树叶加树叶等于几
  • 税务申报按季度申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设