angularjs 防止Firefox自动完成任何带有密码字段的表单

9rnv2umw  于 12个月前  发布在  Angular
关注(0)|答案(3)|浏览(112)

我们有一个单页应用程序,使用AngularJS构建。像许多应用程序一样,我们有一个登录表单,其中包含一个input[type=text](电子邮件)和一个input[type=password](密码)。好的。Firefox保存数据(如果用户确认),下次可以自动完成表单。
我们也有一个用于编辑或创建用户的表单。当然,也有textpassword类型的输入字段。Firefox在任何情况下都会为任何用户自动完成这些字段。
我们的用户编辑表单:

<!--span>made by selectize directive: no id, no name<span-->
<input type="text" tabindex="0"></input>
<input
    id="whatever"
    autocomplete="off"
    class="form-control"
    name="hi"
    ng-minlength="settings.loginSettings.passwordMinLength"
    ng-model-options="{debounce: {'default': 500, 'blur': 0}}"
    ng-model="userData.password" 
    ng-required="!userData.id" 
    placeholder="{{ '_settings.password' | translate }}" 
    type="password" />

字符串
我们的表单有一个不同于登录表单的id,它有autocomplete="off"属性(which is turned off in FF >= 30,尽管它显然是HTML5标准的),密码字段有一个不同于登录表单的nameid属性。其他建议,如添加一个隐藏的(style="display: none")文本输入字段不起作用。
我在用户编辑控制器中创建了一个非常脏的JS hack,它清空了脏字段和相关的模型字段,但用户确实看到页面上发生了奇怪的事情。
Mostdiscussions这个问题在这里是相当老,但另一方面吨的应用程序有一个登录表单用户编辑表单.我猜我们错过了一些简单的东西在这里?

  • 谢谢你的建议 *
ou6hu8tu

ou6hu8tu1#

我已经通过在真实的字段上添加假字段修复了相同的问题。

<input id="prevent_autofill" type="text" style="display:none;" value="" name="prevent_autofill"></input>
<input id="password_fake" type="password" style="display:none;" value="" name="password_fake"></input>

<input id="real_login" type="text" value="" name="real_login"></input>
<input id="real_password" type="password" value="" name="real_password"></input>

字符串

pkbketx9

pkbketx92#

这是一个旧线程,但另一个解决方案是在输入字段中设置autocomplete='new-password'

<input
 id="whatever"
 autocomplete="new-password"
 class="form-control"
 name="hi"
 ng-minlength="settings.loginSettings.passwordMinLength"
 ng-model-options="{debounce: {'default': 500, 'blur': 0}}"
 ng-model="userData.password" 
 ng-required="!userData.id" 
 placeholder="{{ '_settings.password' | translate }}" 
 type="password" />

字符串
请参阅MDM Web文档

lf5gs5x2

lf5gs5x23#

在现代浏览器中,正确的方法是设置autocomplete="new-password"
更多细节可以在here中找到。

<input
    id="whatever"
    autocomplete="new-password"
    class="form-control"
    name="hi"
    ng-minlength="settings.loginSettings.passwordMinLength"
    ng-model-options="{debounce: {'default': 500, 'blur': 0}}"
    ng-model="userData.password" 
    ng-required="!userData.id" 
    placeholder="{{ '_settings.password' | translate }}" 
    type="password" />

字符串

相关问题