当前位置:首页 » 《随便一记》 » 正文

前端如何解决浏览器input输入框密码自动填充的问题

27 人参与  2024年11月26日 16:01  分类 : 《随便一记》  评论

点击全文阅读


        要解决HTML中<input>标签的密码输入框自动填充问题,你可以采取多种方法,但需要注意的是,由于浏览器的实现差异,这些方法可能并不总是有效。以下是一些常见的策略:然而,一些现代浏览器可能会忽略这个属性,特别是当它们认为用户安全受到威胁时(例如,在登录表单中)。

为输入框添加随机名称
浏览器通常根据表单字段的名称来填充信息。通过为密码输入框添加一个随机或唯一的名称,你可以尝试绕过浏览器的自动填充机制:

<input type="password" autocomplete="off" name="password" id="password"><input type="password" name="password_<random_string>" id="password"><input type="password" autocomplete="new-password" name="password" id="password">
<input type="password" name="password_<random_string>" id="password">

注意,这种方法可能需要服务器端逻辑的配合来正确处理这些随机名称。

兼容性笔记好的解决方案
 vue3中:

/*初始化时, input输入框type类型为 text*/const repasswordType = ref('text')const passwordType = ref('text')onMounted(() => {  repasswordType.value = 'text'  passwordType.value = 'text'})/*输入框聚焦时, 讲input输入框type类型为 password*/const useRules = reactive({  userName: [{ required: true, message: '请输入姓名', trigger: ['blur', 'input'] }],  orgName: [{ required: true, message: '请输入机构名称', trigger: ['blur', 'input'] }],  password: [    {      required: true,      trigger: ['blur', 'input'],      validator: () => {        passwordType.value = 'password'        if (!useForm.password.trim()) {          return new Error('请输入密码')        }        if (!validPassword(useForm.password)) {          return new Error('包含8-20个字符,至少包含数字,字母,常用字符两种元素')        }        // 检查是否与用户名相同        if (useForm.password === useForm.phoneNumber) {          return new Error('密码不能与手机号相同,请重新输入')        }        return true      },    },  ],  repassword: [    {      required: true,      trigger: ['blur', 'input'],      validator: () => {        repasswordType.value = 'password'        if (useForm.password !== useForm.repassword) {          return new Error('两次输入密码不一致,请重新输入')        }        return true      },    },  ],  phoneNumber: [    {      required: true,      trigger: ['blur', 'input'],      validator: () => {        if (!useForm.phoneNumber.trim()) {          return new Error('请输入手机号码')        }        if (!validPhoneNumber(useForm.phoneNumber)) {          return new Error('手机号码格式不正确,请重新输入')        }        // if (phoneNumberExist.value) {        //   return new Error('该手机号已经注册,请直接登录')        // }      },    },  ],  verificationCode: [{ required: true, message: '请输入验证码', trigger: ['blur', 'input'] }],})

考虑安全性和可用性
在尝试解决自动填充问题时,始终要权衡安全性和可用性。禁用自动填充可能会提高安全性(例如,防止跨站请求伪造攻击),但也可能降低用户体验(例如,需要用户手动输入更多信息)。

请记住,没有一种方法可以保证在所有情况下都有效,因为浏览器的自动填充行为是由它们的实现和用户的设置决定的。因此,建议测试你的解决方案以确保它在目标浏览器和环境中按预期工作。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/192370.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1