2013-09-29 56 views
2

我使用angular-http-auth在angular-js應用程序中進行身份驗證。如何使用angular-http-auth保持會話?

這裏是登錄控制器內的登錄功能:

$scope.login = function() { 
    var credentials = Base64.encode($scope.username + ':' + $scope.password); 
    var config = { headers: { 'Authorization': 'Basic ' + credentials } };   
    $http.get('url/to/json/user', config) 
     .success(function() { 
      $http.defaults.headers.common['Authorization'] = 'Basic ' + credentials; 
      authService.loginConfirmed(); 
      console.log('login success'); 
     }) 
     .error(function() { 
      console.log('login failed'); 
    }); 
} 

(Base64是從here來加密服務)

問題:如果用戶已經登錄,他打開新標籤,或者如果他重新加載頁面,他必須再次登錄。

怎樣才能避免這種情況,並保持會話打開,如果用戶重新加載頁面或來自外部鏈接?

+0

只是說明:base64是編碼,而不是加密。無需密鑰就可以很容易地進行翻轉,因此可以混淆身份驗證信息,並且可以避免其他編碼問題(如HTTP編碼),但不會增強安全性。 – JBCP

回答

3

您可以使用cookie或html5數據存儲來保存證書或使用憑據保存base64字符串。然後你可以從那裏加載它們並解析它們到$ http.defaults.headers.common ['Authorization'] ='Basic'+憑證;

希望它有幫助。