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

  • iqoo8pro怎么消除角标(iqoo8怎么关闭后应用程序)

    iqoo8pro怎么消除角标(iqoo8怎么关闭后应用程序)

  • 华为nova7如何取消HD(华为nova7如何取电话卡)

    华为nova7如何取消HD(华为nova7如何取电话卡)

  • 固态硬盘5年后就不能用吗

    固态硬盘5年后就不能用吗

  • 携程抢票怎么帮好友加速(携程抢票怎么帮忙助力抢)

    携程抢票怎么帮好友加速(携程抢票怎么帮忙助力抢)

  • 换主板后开机蓝屏0x0000007b(换主板后开机蓝屏0x0000007b怎么办)

    换主板后开机蓝屏0x0000007b(换主板后开机蓝屏0x0000007b怎么办)

  • ios12.4.7更新了什么(ios12.42更新了什么)

    ios12.4.7更新了什么(ios12.42更新了什么)

  • ipad pro12.9寸尺寸是多少厘米(ipad pro2021 12.9寸尺寸是多少厘米)

    ipad pro12.9寸尺寸是多少厘米(ipad pro2021 12.9寸尺寸是多少厘米)

  • 手机内屏出现紫色扩散(手机内屏出现紫色扩散怎么办)

    手机内屏出现紫色扩散(手机内屏出现紫色扩散怎么办)

  • 手机屏幕被按出波纹了要紧吗(手机屏幕被按出白点)

    手机屏幕被按出波纹了要紧吗(手机屏幕被按出白点)

  • oppor9s带不带nfc功能(oppor9s带不带红外线功能)

    oppor9s带不带nfc功能(oppor9s带不带红外线功能)

  • 路由器的作用和主要功能(路由器的作用和原理)

    路由器的作用和主要功能(路由器的作用和原理)

  • 美团抢票成功率高吗(美团抢票会不会不成功)

    美团抢票成功率高吗(美团抢票会不会不成功)

  • 手机热点会中病毒吗(手机热点会不会中毒)

    手机热点会中病毒吗(手机热点会不会中毒)

  • oppo充电器是什么接口(oppo充电器叫什么名字)

    oppo充电器是什么接口(oppo充电器叫什么名字)

  • 手机上可以抠图吗(手机抠图)

    手机上可以抠图吗(手机抠图)

  • oppor15录屏功能在哪(oppor15录制屏幕在哪)

    oppor15录屏功能在哪(oppor15录制屏幕在哪)

  • 预售商品怎么放入购物车(预售商品怎么放入购物车?)

    预售商品怎么放入购物车(预售商品怎么放入购物车?)

  • 小米mix2什么时候更新miui11(小米mix2什么时候推送miui12)

    小米mix2什么时候更新miui11(小米mix2什么时候推送miui12)

  • 三星s10怎么使用两个微信(三星s10怎么使用三星版carlife)

    三星s10怎么使用两个微信(三星s10怎么使用三星版carlife)

  • 用ai怎么提取图片线稿(ai怎么提取图片里的文字)

    用ai怎么提取图片线稿(ai怎么提取图片里的文字)

  • 怎么把doc转换成docx(怎么把doc转换成zip)

    怎么把doc转换成docx(怎么把doc转换成zip)

  • 苹果6手机反应慢的解决方法(苹果6手机反应迟钝了怎么办)

    苹果6手机反应慢的解决方法(苹果6手机反应迟钝了怎么办)

  • 图片配文字怎么做(图片配文字怎么弄)

    图片配文字怎么做(图片配文字怎么弄)

  • 最小的U盘是什么(体积最小的u盘)

    最小的U盘是什么(体积最小的u盘)

  • JSP页面实现验证码校验(用jsp实现用户登录验证)

    JSP页面实现验证码校验(用jsp实现用户登录验证)

  • 【Vue入门必备知识篇05】--- Vue Router路由(vue从入门到精通教程)

    【Vue入门必备知识篇05】--- Vue Router路由(vue从入门到精通教程)

  • 失控发票账务处理
  • 关税的征收对象是贸易性商品,不包括
  • 个人所得税综合税率表2023
  • 白酒消费税纳税人
  • 所得税退税怎么办
  • 开模费用计入什么科目
  • 地产公司土地分摊方案
  • 个人转让不动产给个人独资企业
  • 劳务费发票可以含材料费吗
  • 核定征收的企业所得税怎么算
  • 免税发票可以入账吗
  • 增值税纳税表销售额的填写
  • 一个季度又叫什么
  • 公司车辆可以一年一检吗
  • 记账凭证的科目不会填
  • 个体户需要申报工资薪金吗
  • 现金盘亏账务处理分录
  • 资产处置损益计入利润吗
  • 用户登录系统后首先进入什么
  • 华为系统设置权限
  • 主营业务成本计入成本类账户吗
  • 建筑行业预交增值税什么时候预交
  • csinsmnt.exe进程的作用介绍 csinsmnt是什么进程
  • 交通费补贴算工资吗?
  • JS XMLHttpRequest对象详解
  • php获取mysql数据
  • 农产品加计扣除1%怎么计算和会计分录
  • mysqlmha高可用
  • php中定义函数
  • 会计审核费用报销单的职责
  • 期初成本和期末成本
  • 借入资金会计科目
  • 非公党建党费收缴
  • 奖金属于职工福利薪酬吗
  • 社保基数怎么申请下调
  • 帝国cms灵动标签 PHP变量文章ID加减1
  • 帝国cms使用手册
  • phpcms生成html
  • 普通动产和特殊动产登记的区别
  • 发票专用章刻制
  • 印花税都有什么类目
  • 小微企业增值税起征点是多少
  • 小规模纳税人是什么意思
  • 新公司第一年要交什么税
  • 发票冲红和作废有啥区别
  • 商贸公司成本大吗
  • 招待客人有什么讲究
  • 销售应税服务或劳务的纳税义务发生时间的一般规定
  • 无形资产多摊销怎么处理
  • 免征增值税的会计处理一般纳税人
  • 有形动产租赁属于经营租赁吗
  • 什么是外汇业务,外币业务主要内容有哪些
  • 长期股权投资中级会计例题
  • 第三方平台佣金账务处理
  • 收客户逾期利息会计分录
  • 增值税政策依据
  • 会计结账一般都是谁做
  • 销售货物没开票是不是不交税
  • Win7旗舰版系统镜像文件
  • window8开机
  • DxDebugService.exe是什么进程 DxDebugService进程安全吗
  • 查看win8.1版本
  • 在windows xp的应用程序中,经常有一些
  • Windows Server 8 ADDS轻松几步搞定密码个性化设置
  • nodejs执行cmd命令
  • 删除滑动解锁图片
  • dos命令语法
  • opengl transform
  • jquery2
  • 批处理for命令修改后缀名
  • [置顶]bilinovel
  • unity3d碰撞体
  • Android UI之TableLayout(表格布局)
  • 安卓怎么压缩
  • 我国是多久取消税收的
  • 餐饮业如何缴纳增值税
  • 甘肃国税电子税务局
  • 商铺转让费怎么开票项目
  • 请问农村自建房彩钢瓦下面修房吊什么顶好
  • 增值税发票选择确认平台已勾选未确认的发票怎么撤销?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设