angular - 即使从页面中删除了登录组件,Firefox 仍要求保存密码

标签 angular firefox authentication plunker

如果我们在应用程序中创建了带有登录名和密码字段的组件,那么在我们通过路由器导航到其他组件后,Firefox 会要求保存密码。回答“否”没有帮助,因为当我们在页面之间导航时,通知会一次又一次地出现。

但是如果我们没有创建带有登录名和密码字段的组件(没有用这个组件打开 url),那么导航不会调用通知。

看起来,带有登录名和密码的表单同时出现在 DOM 中并同时消失,因此 Firefox 认为我们已成功登录。

但这没有任何意义,因为在我们离开带有输入的页面后,组件被销毁了。

Chrome 没有这样的问题,所以不清楚是 Angular 的 bug 还是只是 Firefox 的 bug。

预期的行为是 Firefox 应该只询问一次保存密码,而不是页面之间的每次导航。

Plunker 演示 http://embed.plnkr.co/SUcx1ZJMFVXMeI4aJZ41/

  1. 导航到第 1 页
  2. 之后导航到密码
  3. 然后再次导航到第 1 页。将出现通知。
  4. 回答“否”并导航至第 2 页。通知将再次出现。

之后尝试相同的示例,但不创建带有登录名和密码的表单

  1. 重新加载 plunker(可能需要重新加载所有页面)
  2. 导航到第 1 页
  3. 导航到第 2 页
  4. 在我们导航到“密码”页面之前不会出现通知。

有没有人遇到过这种行为并知道如何解决?通知很烦人。

UPD 18.04.2018:之前我们注意到,该问题仅出现在 JIT 编译中。对于生产和 AOT 构建,一切工作正常 - 没有显示密码保存建议的提示。所以在某个地方出现了问题,但它只对开发人员来说很烦人。

几天前,我们将 Angular 升级到 5.2.10 版本,将 NodeJS 升级到 8.11.1 版本(我们之前使用的是 7.10)。之后生产模式也出现了这个问题。

仍然没有解决方案或不清楚是什么原因。

最佳答案

我不知道这是否有帮助。当我的密码元素未包含在 <form> 中时,我在使用 Vue.js 时注意到了这个问题。元素。为了补救,我用 <form> 包围了我的登录字段我在其上设置 preventDefault 的元素submit 指令事件。在 Vue.js 中看起来像这样:

<form v-on:submit.prevent>
Username: <input v-model="username" />
Password: <input type="password" v-model="password" />
</form>

我应该提一下,当您提交表单时,系统仍然会要求您保存密码,但后续导航不会再出现提示。

关于angular - 即使从页面中删除了登录组件,Firefox 仍要求保存密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47524922/

相关文章:

html - Pinterest 布局样式在 Firefox 中不起作用?

html - 为什么图像的最大高度适用于除 Firefox 以外的所有浏览器?

javascript 设置超时();不适用于 linux (firefox)

javascript - 当我在类型脚本中选择其中一个时,选择所有复选框

angular - 我怎么能在angular2中导入@types/three

angular - Angular2 中的提供者是什么?

facebook - 将 facebook 身份验证用于浏览器扩展

python - 如何使用 python 中的存储帐户 key 对 azure 存储 api 请求进行身份验证?

security - Oauth2 使用 hd 限制具有特定域名的电子邮件不起作用

angular - 如何创建一个接口(interface)来以 Angular 方式制作http响应类型?