2015-04-15 55 views
1

我正在學習如何使用令牌在angular.js前端驗證用戶身份。如何在django rest框架中使用令牌進行身份驗證

我使用下面的包

https://github.com/GetBlimp/django-rest-framework-jwt

我已經實現了所有的設置和採樣捲曲請求(Django的REST框架JSON網絡令牌身份驗證支持)工作正常。

現在我已經登錄頁面angularjs其職位,以REST端點,如下代碼所示:

$http 
    .post('/api-token-auth/', {email: $scope.account.email, password: $scope.account.password}) 
    .then(function(response) { 
    // assumes if ok, response is an object with some data, if not, a string with error 
    // customize according to your api 
    if (!response.account) { 
     $scope.authMsg = 'Incorrect credentials.'; 
    }else{ 
     $state.go('dashboard'); 
    } 
    }, function(x) { 
    $scope.authMsg = 'Server Request Error'; 
    }); 

現在,當我張貼的電子郵件和密碼,然後在響應我得到成功的標誌是這樣

{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNhbXBsZUBzYW1wbGUuY29tIiwidXNlcl9pZCI6MSwiZW1haWwiOiJzYW1wbGVAc2FtcGxlLmNvbSIsImV4cCI6MTQyOTA5NjM5N30 
.w0XV1kArTyZY9iCPyr2LmRzToD9iOgYlMVCoXmdOJ1A"} 

現在,因爲我對令牌不太瞭解,所以我想知道接下來應該做什麼?我的意思是在獲得令牌後,我如何登錄用戶並將其放入角度爲userObject

回答

2

您必須在每個訪問登錄內容的請求中傳遞令牌作爲授權標頭。您可以使用$ https默認標題來完成此操作。

$http 
    .post('/api-token-auth/', {email: $scope.account.email, password: $scope.account.password}) 
    .then(function(response) { 
    ... 
    } else { 
     localStorage.setItem('myApp.token',response.token); 
     $http.defaults.headers.common.Authorization = 'Bearer ' + response.token 
     $state.go('dashboard'); 
    } 
    ... 

你也應該保存在localStorage的這個值,並設置默認的頭在你的應用程序運行,這樣當用戶回來喲你的網頁,他們已經登錄這樣的:

angular.module('myApp').run(function($http) { 
    $http.defaults.headers.common.Authorization = 'Bearer ' + localStorage.getItem('myApp.token') 
}); 
+0

謝謝。我無法得到你的第二部分,你說我需要把默認頭部放在應用程序運行中。我怎樣才能做到這一點。同樣,如果使用ur行這是否意味着下次用戶不需要登錄,如果他們訪問認證iurl – user3214546

+0

我已經更新了答案,登錄時在localstorage中設置令牌。當您的應用程序啓動時,運行塊將觸發並從localstorage獲取令牌並將其用作def頭標,那麼您的用戶就不必再登錄了! :) –

+0

謝謝你。有沒有什麼辦法還可以獲得用戶名,用戶ID等與令牌的響應,以便我可以更新角度用戶對象 – user3214546

0

如果你收到一個令牌作爲響應,這意味着用戶已經登錄。

要使用令牌,你應該把它添加爲HTTP頭爲後續請求。

Authorization: JWT <your_token> 
相關問題