2016-04-07 68 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