我有一个用 React 创建的登录表单。它使用 window.fetch
(polyfill) 来处理请求,并使用 react-router
在登录后转到正确的页面。
问题是 Chrome 不提供保存用户名+密码的可能性,而 Firefox、Safari 和 IE 提供(可能 Opera 也是)。
我目前正在仅使用 http 针对本地主机对其进行测试,但我认为这不是问题所在。
代码如下:
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 自动完成首选项。从这个 Angular 来看,一切都很好。
最佳答案
老问题,但如果有人遇到同样的问题并且浏览器说证书无效,那么可能需要信任证书。
我遇到了这个问题,没有提示我为公司内部网站保存我的用户名/密码。然后我意识到浏览器显示网站证书无效。因为这是我可以信任的公司内部网站;我将证书导入 Keychain Access,将信任设置为 Allow Always,然后我又回来了!
Mac 上的 Chrome
关于javascript - 登录表单不提供在 Chrome 上保存密码的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31338489/