2014-09-23 157 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