我的网页应用上有一个登录页面,有2个输入(电子邮件/密码)。实际上一切都适用于NodeJS / PassPort / Angular。但是我在自动填充和在Chrome和Firefox上记住密码时遇到了问题。
1)在Chrome上,浏览器不会询问我是否要保存密码,没有自动填充,它也不记得表单上的任何内容。这很烦人。
2)在Firefox上,浏览器要求我保存密码并保存。然而,当我回到它上面时,我的输入已经填满,但是如果我点击"登录",没有任何反应,我在登录前编辑每个字段的值。
我已经阅读了很多关于AJAX和Auto-Fill的内容,但是我对这种东西都是全新的,我不了解所有内容。
这是我的前端代码:
的login.html
<form class="form-signin"
name="form"
ng-submit="login(form)"
novalidate>
<div ng-class="{'has-error': form.email.$error.mongoose}">
<input type="text"
class="form-control"
placeholder="Email"
name="email"
ng-model="user.email"
required
autofocus
mongoose-error>
<p class="help-block"
ng-show="form.email.$error.mongoose">
{{ errors.email }}
</p>
</div>
<div ng-class="{'has-error': form.password.$error.mongoose}">
<input type="password"
class="form-control"
placeholder="Password"
name="password"
ng-model="user.password"
required
mongoose-error>
<p class="help-block"
ng-show="form.password.$error.mongoose">
{{ errors.password }}
</p>
</div>
<div class="form-group has-error">
<p class="help-block">{{ error.other }}</p>
</div>
<button class="btn btn-lg btn-danger btn-block" type="submit"> Sign in </button>
<span class="clearfix"></span>
</form>
login.js(控制器)
$scope.login = function(form) {
var str = $scope.user.email;
Auth.login('password', {
'email': str.toLowerCase(),
'password': $scope.user.password
},
function(err) {
$scope.errors = {};
if (!err) {
$location.path('/page/1');
} else {
angular.forEach(err.errors, function(error, field) {
form[field].$setValidity('mongoose', false);
$scope.errors[field] = error.type;
});
$scope.error.other = err.message;
}
});
感谢您的帮助。
答案 0 :(得分:1)
查看此讨论https://github.com/fnakstad/angular-client-side-auth/issues/58。一种铬虫。
尝试https://github.com/tbosch/autofill-event。适用于我的项目。