Auth.getCurrentUser()。$ resolved返回false

时间:2015-05-26 17:02:13

标签: angularjs oauth

我实际上使用Daftmonk fullstack生成器,我的问题有时当我尝试获取$resolved的值时,它有时返回false所以我按 F5 刷新。

我可以登录,然后我在导航栏上获得当前用户的名称,但它返回false,我无法在正文上获得当前用户的电子邮件或姓名。

1 个答案:

答案 0 :(得分:0)

我实际上在另一个堆栈问题中找到了可能的解决方案。问题似乎来自client/components/auth/auth.service.js异步代码存在问题。

在我的案例中有效的修复是对服务中的login()函数进行以下更改:

  login: function(user, callback) {
    var cb = callback || angular.noop;
    var deferred = $q.defer();

    $http.post('/auth/local', {
      email: user.email,
      password: user.password
    }).

    /* Old code       
    // success(function(data) {
    //   $cookieStore.put('token', data.token);
    //   currentUser = User.get();
    //   deferred.resolve(data);
    //   return cb();
    // }).
    */ 

    /* New code */
    success(function(data) {
      $cookieStore.put('token', data.token);
      currentUser = User.get(function (){
        deferred.resolve(data);
        return cb();
      })
    }).

    error(function(err) {
      this.logout();
      deferred.reject(err);
      return cb(err);
    }.bind(this));

    return deferred.promise;
  },

这是来自其他堆栈问题的复制粘贴。可在此处找到原始且更详细的答案:getCurrentUser().role undefined in DaftMonk/generator-angular-fullstack