2014-09-23 72 views
0

我想修改下面的angularfire代码(取自文档: https://www.firebase.com/docs/web/libraries/angular/guide.html#section-angular-authentication) ,这样如果用户没有登录,它也会在页面加载之前登录用户,用户数据将会准备好马上使用。修改angularfire解决方案

这是原文:

resolve: { 
    "currentUser": ["simpleLogin", function(simpleLogin) { 
    return simpleLogin.$getCurrentUser(); 
    }] 
} 

,这是我到目前为止有:

resolve: { 
    "currentUser": ["simpleLogin", function(simpleLogin) { 
    return simpleLogin.$getCurrentUser(); 
    }], 
    "loginUser": ["simpleLogin", function(simpleLogin) { 
    return simpleLogin.$login("anonymous", {rememberMe : true}); 
    }] 
} 

,但这样会造成每次先登录用户从而复位ID(我认为?)。我如何有条件地做到这一点,以便他们只有登录,如果不是已经?

+0

托尼,如果你尝试登录他们在自动,你会碰到弹出窗口拦截等方面的问题,因为它没有运行基于用户操作。 – Kato 2014-09-24 04:28:59

+0

你推荐我做什么?这是一个在线文本编辑器,它们被自动定向到一个有点像firepad的独特“pad”。我需要知道谁在写什么?谢谢(这是汤姆!)哈哈 – tommyd456 2014-09-24 07:07:22

+0

我不想用Firepad! – tommyd456 2014-09-24 07:07:51

回答

0

与其使用两种解决方法,我只是将它们链接在一起。由于$登录返回一个承诺,这是很顺风顺水:

resolve: { 
    "currentUser": ["simpleLogin", function(simpleLogin) { 
    return simpleLogin.$getCurrentUser().then(function(user) { 
     if(user === null) { 
      // log in now... 
      return simpleLogin.$login('anonymous', {rememberMe: true}); 
     } 
     else { 
      // logged in! 
      return user; 
     } 
    }); 
    }] 
} 
+0

太棒了!谢谢你 - 它完美的工作。 – tommyd456 2014-09-24 15:24:24