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

时间:2015-07-10 10:27:43

标签: javascript forms google-chrome reactjs

我正在使用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 个答案:

答案 0 :(得分:0)

当Chrome更新(44.x)时,显然已解决了该问题。