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

  • 店铺如何做宣传推广更好的提升流量(如何做好店铺宣传工作)

    店铺如何做宣传推广更好的提升流量(如何做好店铺宣传工作)

  • 钉钉分屏会记录时间吗(钉钉分屏能看到吗)

    钉钉分屏会记录时间吗(钉钉分屏能看到吗)

  • 华为nova5输入法怎么改(华为nova5输入法怎么设置中日快速切换)

    华为nova5输入法怎么改(华为nova5输入法怎么设置中日快速切换)

  • i510400f配什么主板(i510400f配什么主板性价比)

    i510400f配什么主板(i510400f配什么主板性价比)

  • 无法获取健康码信息是什么原因(扫描健康码显示无法获取健康码信息)

    无法获取健康码信息是什么原因(扫描健康码显示无法获取健康码信息)

  • ipad air3电池使用时间(ipad air3电池健康)

    ipad air3电池使用时间(ipad air3电池健康)

  • 微博掉权重什么意思(微博权重掉了要怎么刷上去)

    微博掉权重什么意思(微博权重掉了要怎么刷上去)

  • 西瓜视频怎么打赏作者(西瓜视频怎么打标签)

    西瓜视频怎么打赏作者(西瓜视频怎么打标签)

  • 你的快手账号异常请重新登录是怎么回事(你的快手账号异地登陆)

    你的快手账号异常请重新登录是怎么回事(你的快手账号异地登陆)

  • 不知道手环品牌怎么查连(不知道手环品牌怎么连接)

    不知道手环品牌怎么查连(不知道手环品牌怎么连接)

  • 计算机病毒的六个特点(计算机病毒的六种类型)

    计算机病毒的六个特点(计算机病毒的六种类型)

  • oppo屏幕旁边白条(oppo手机屏幕边上有白斑)

    oppo屏幕旁边白条(oppo手机屏幕边上有白斑)

  • 剪映怎么把两个视频同框一起放(剪映怎么把两个视频重叠)

    剪映怎么把两个视频同框一起放(剪映怎么把两个视频重叠)

  • 表格怎么切换下一行输入(表格怎么切换下一个表格)

    表格怎么切换下一行输入(表格怎么切换下一个表格)

  • 牵网线和宽带有什么区别(宽带跟拉网线有什么区别)

    牵网线和宽带有什么区别(宽带跟拉网线有什么区别)

  • 艺术字文字环绕方式(艺术字文字环绕方式包括)

    艺术字文字环绕方式(艺术字文字环绕方式包括)

  • 小米6x能插内存卡吗(小米6x可以加内存卡)

    小米6x能插内存卡吗(小米6x可以加内存卡)

  • 淘宝id地址是什么意思(淘宝id是哪里)

    淘宝id地址是什么意思(淘宝id是哪里)

  • 你拨打电话已关机是什么意思(你拨打电话已关机或无法接通)

    你拨打电话已关机是什么意思(你拨打电话已关机或无法接通)

  • 设置cad绘图比例尺寸(cad中怎么设置绘图比例)

    设置cad绘图比例尺寸(cad中怎么设置绘图比例)

  • 激萌如何使用图片拼图(激萌如何手动p图)

    激萌如何使用图片拼图(激萌如何手动p图)

  • 计算机操作系统的作用(计算机操作系统指什么)

    计算机操作系统的作用(计算机操作系统指什么)

  • iphonexsmax原彩显示在哪(xsmax的原彩显示)

    iphonexsmax原彩显示在哪(xsmax的原彩显示)

  • 【THREE.JS学习(3)】使用THREEJS加载GeoJSON地图数据(three.js 教程)

    【THREE.JS学习(3)】使用THREEJS加载GeoJSON地图数据(three.js 教程)

  • unplugin-auto-import的使用(unplugin-auto-import github)

    unplugin-auto-import的使用(unplugin-auto-import github)

  • 视同内销增值税怎么申报
  • 土地增值税会计核算
  • 项目固定资产投资包括
  • 私募基金如何做大规模
  • 公司付给中间人居间费用如何纳税
  • 政府回购安置房几种模式
  • 停车场自助缴费系统
  • 网线的税收编码是多少
  • 发票开成了下属机构的可以报销吗
  • 企业现金类资产包括
  • 开发产品计入什么科目
  • 个体工商户个人所得税怎么申报
  • 从农民合作社取得的普通发票可以抵扣吗
  • 设置会计科目的步骤
  • 销售免税药品要进项税额转出吗
  • 从外面买回来的菜怎么消毒
  • 调低社保基数怎么操作
  • 行政相对人和行政管理相对人的区别
  • 失控发票已取得怎么处理
  • 国际货运代理免税备案取消了吗
  • 专用发票第一次怎么开
  • 差额发票开具的步骤
  • 公司购买的一次性纸杯计入哪个科目
  • 发票已认证开票方未报税要怎么作废?
  • 固定资产移交给别的单位怎么做账
  • 以前年度应收账款错误如何调整
  • 增值税当月申报次月缴纳吗
  • 公司发生的业务有哪些
  • 专用发票和普通发票的报销区别
  • 商业折扣影响入账金额吗
  • 通知单位发放过节补助怎么说
  • 学生兼职收入按什么交个税
  • vueconfigjs配置proxy 无效
  • 个人借款放在哪个科目
  • 进项票留底怎么做分录
  • yolo行人检测
  • vue axios 拦截器
  • framework在哪里打开
  • 开具红字发票资料清单
  • 房地产开发公司组织架构
  • 金融资产减值包括
  • 工程结算成本和主营业务成本一样吗
  • 消防收费标准
  • 发工资是用借记卡还是储蓄卡
  • 劳务报酬所得与工资薪金所得纳税的区别
  • 解决烧心最快方法
  • 哪些科目会影响损益
  • 融资租赁租金利息怎么算
  • 货款收不回来了怎么做账
  • 小规模注销时盈余怎么算
  • 劳动关系与劳务关系的联系与区别
  • 坏账损失记入
  • 金蝶计价方法在哪里
  • 无追索权保理的说法
  • 去年的增值税专用发票可以重开吗
  • 公司购买购物卡账务处理
  • 案例分析购入办法怎么写
  • 电话费计入什么二级科目
  • linux服务器查找文件命令
  • 关于月亮的诗句
  • 怎么修改注册表的权限
  • ubuntu下的代码编辑器
  • centos failed to start login service
  • centos怎么配置ssh
  • mom.exe是什么
  • win7旗舰版更改适配器没有蓝牙连接
  • 微软系统如何恢复出厂设置
  • 注册表 windows
  • unity3d摄像头
  • node.js实战
  • edittext弹出软键盘
  • python int 转 float
  • js字符串去掉最后两位
  • android ashmem
  • 简单谈谈你对公安工作的认识
  • javascript语法总结
  • 电子税务平台怎么开发票
  • 历年房产税
  • 个体税务怎么查询
  • 西北地区的沙尘暴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设