登录表单不提供 Chrome 上的密码保存功能

Posted

技术标签:

【中文标题】登录表单不提供 Chrome 上的密码保存功能【英文标题】:Login form does not offer password saving on Chrome 【发布时间】:2015-09-29 01:38:22 【问题描述】:

我正在使用 React 创建一个登录表单。它使用window.fetch (polyfill) 处理请求,使用react-router 在登录后进入正确的页面。

问题在于 Chrome 不提供保存用户名+密码的可能性,而 Firefox、Safari 和 IE 提供(可能 Opera 也是)。

我目前仅使用 http 对 localhost 进行测试,但我认为这不是问题。

代码如下:

doSignIn: function(evt) 
  evt.preventDefault();

  this.context.SignInAction.signIn(evt.target.action, 
    email: this.credentials.email,
    password: this.credentials.password
  )
  .then(() => 
    this.transitionTo('/');
  )
  .catch((err) => 
    this.setState(incorrectSignIn: true);
    React.findDOMNode(that.refs.email).focus();
  );
,

(渲染部分):

<form autoComplete='on' method='POST' action='/site/sign-in' onSubmit=this.doSignIn>
  <ul className='signIn'>
    <li className=classesNotification>Invalid e-mail or password</li>
    <li>
      <input
        ref='email'
        type='email'
        defaultValue=this.credentials.email
        placeholder='your e-mail address'
        required
        autoFocus='true' />
    </li>
    <li>
      <input
        type='password'
        defaultValue=this.credentials.password
        placeholder='password'
        required /></li>
    <li><button type='submit'>Sign in</button></li>
  </ul>
</form>

我查找了类似的案例,但大多数都声称它是由autocomplete=off 引起的。我的情况并非如此。

我也检查了这个问题:Using reactjs and javascript - Chrome does not offer to remember passwords,但没有帮助。

这是 Chrome 中的一个错误,还是我必须以某种方式将我的请求作为普通表单帖子“传播”,以让 Chrome 了解我们实际上是在向服务器发送用户名+密码?

请注意,我已在三台不同的计算机上尝试过此操作,一台本地计算机,一台来自同一网络,另一台来自虚拟机,并且还检查了我自己的 Chrome 自动完成首选项。从这个角度来看,一切都很好。

【问题讨论】:

【参考方案1】:

当 Chrome 更新 (44.x) 后,这个问题显然得到了解决。

【讨论】:

以上是关于登录表单不提供 Chrome 上的密码保存功能的主要内容,如果未能解决你的问题,请参考以下文章

Chrome上对于自动保存密码的管理

jquerymobile - Chrome 不会在标准 POST 提交时提示保存密码

HTML登录表单:提供用户名,自动填充密码

Chrome - 您要保存此密码吗?提示获取不正确的值

哪个高手能说一下chrome的“表单填充”有啥用

在chrome浏览器的登录数据,保存的密码。都不见了。怎样保护。