2013-07-01 304 views
2

我做了一個使用Angular.js的常規應用程序,用戶登錄後,如果在瀏覽器中刷新,標誌信息消失,登錄狀態爲重置,我必須再次登錄,如何保持登錄狀態事件在瀏覽器中刷新?如何使用Angular.js刷新後保持登錄狀態

感謝您的幫助

+0

將會話票保存在cookie中? –

回答

7

您可以使用AngularJS服務$cookieStore

但是在AngularJS 1.0.7中,您無法設置路徑或Cookie持續時間,因此您需要實施自己的服務。

一些額外提示:

- 用於AngularJS 1.0.7-你需要從here

- 你需要注入服務$的CookieStore在控制器/服務

下載庫 - 你應該創建一個全球服務,檢查/設置/刪除會話cookie

使用服務的一些起點示例:

app.service('global', function($cookieStore, $location, $filter) { 
    var globalService = {}; 
    globalService.user = null; 
    globalService.isAuth = function(){ 
     if (globalService.user == null) { 
      globalService.user = $cookieStore.get('user'); 
     } 
     return (globalService.user != null); 
    }; 
    globalService.setUser = function(newUser) { 
     globalService.user = newUser; 
     if (globalService.user == null) $cookieStore.remove('user'); 
     else $cookieStore.put('user', globalService.user); 
    }; 
    globalService.getUser = function() { 
     return globalService.user; 
    }; 
    return globalService; 
}); 

在您登錄後調用setUser以在cookie中保存用戶(可能是服務器返回的某個令牌)。 然後,您應該爲需要登錄用戶的每個請求發送驗證令牌數據。

令牌可以是PHP會話(如果使用PHP)並且會話可以在服務器上恢復。

+0

感謝Kcsoft,請給出一段代碼?目前,我將登錄的用戶信息保存在$ rootScope中。在瀏覽器中刷新時是否重置了$ rootScope? –

+0

用一個例子做了一些編輯。 – kcsoft