AngularJS + PassPort自动填充并记住密码

时间:2014-08-27 12:54:34

标签: angularjs autocomplete passwords autofill

我的网页应用上有一个登录页面,有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;
          }
      });

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  1. 查看此讨论https://github.com/fnakstad/angular-client-side-auth/issues/58。一种铬虫。

  2. 尝试https://github.com/tbosch/autofill-event。适用于我的项目。