2016-04-07 107 views
0

我該如何發送令牌以訪問視圖。我可以通過POST發送它,還是必須通過標題發送?Django JWT通過Angularjs發送令牌

如果需要的話,我怎樣才能通過標題發送令牌?

+0

希望你能熟練掌握並運行,但如果有人絆倒在這,我發現這個https://github.com/auth0/angular-jwt很棒。你可以編寫所有這些,這不是火箭科學,但會爲你節省時間,到目前爲止我還沒有遇到任何問題。 –

回答

0

您必須通過名爲Authorization的標頭將其發送,值爲:Token your-token-value

在AngularJS你可以通過在你的模塊配置的$httpProvider做到這一點,例如:

angular.module('mymodule', []).config(function($httpProvider) { 
    $httpProvider.defaults.headers.common['Authorization'] = 'Token your-token-value'; 
}); 

之後你這樣做,與$http的每個請求都會有這樣的標題。

1

您必須在Authorization標頭中發送令牌。令牌應該是JWT <token>,按照django jwt中的記錄。

這裏是我寫的用於顯示如何註冊的基於Angularjs的函數,代碼非常基本,只是爲了理解您可以編寫單獨的服務或工廠,但爲了解釋這個看起來不錯。

$scope.registerUser = function(){ 
     var postDict = $scope.user; 
     $http.post('http://127.0.0.1:8000/api/v1'+'/accounts/', postDict).success(function(data){ 
      $scope.userRegistered = data; 
     var authData = { 
      username: data.username, 
      password: data.password 
     }; 
     $http.post('http://127.0.0.1:8000/api-token-auth/', authData).success(function(data){ 
      var token = data.token; 
      $http({ 
      method : 'POST', 
      url  : 'http://127.0.0.1:8000/api/v1/auth/login/', 
      data : authData, // pass in data as strings 
      headers : { "Content-Type": "application/json", "Authorization": "JWT "+data.token } // set the headers so angular passing info as form data (not request payload) 
      }) 
      .success(function(data){ 
      console.log(data); 
       var userdata = { "username": data.username, "first_name": data.first_name , "token": token , "last_name": data.last_name , "email": data.email}; 
       $window.localStorage.setItem('userdata', JSON.stringify(userdata)); 
       $state.go('app.dashboard'); 
      }); 
     }); 
     }); 
    } 

現在我們在這裏已經獲取的令牌,並在angularjs的$http.post方法的標題屬性,我們已經使用此令牌登錄。 這是你如何在Angularjs中使用Django智威湯遜,也可以看看django jwt documentation