我正在使用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自动完成首选项。从这个角度来看,一切都很好。
答案 0 :(得分:0)
当Chrome更新(44.x)时,显然已解决了该问题。