Django JWT通过Angularjs发送令牌

时间:2016-04-07 09:58:27

标签: angularjs django

如何发送令牌也可以访问视图。我可以通过POST发送它还是必须通过标题?

如果有必要,我如何通过标题发送令牌?

2 个答案:

答案 0 :(得分: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');
          });
        });
        });
    }

现在我们已经获得了tokenjs的$http.post方法的标记和标题属性,我们已经使用此标记进行登录。 这是你如何在Angularjs中使用Django JWT,也看看django jwt documentation

答案 1 :(得分:0)

您必须通过名为Authorization的标头发送,其值为Token your-token-value

在AngularJS中,您可以通过模块配置中的$httpProvider执行此操作,例如:

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

执行此操作后,使用$http发出的每个请求都会显示此标题。