Как я могу отправить токен, чтобы получить доступ к представлению. Могу ли я отправить его через POST или он должен быть через заголовок?Django JWT отправляет токен через Angularjs
Как я могу отправить токен через заголовок, если это необходимо?
Как я могу отправить токен, чтобы получить доступ к представлению. Могу ли я отправить его через POST или он должен быть через заголовок?Django JWT отправляет токен через Angularjs
Как я могу отправить токен через заголовок, если это необходимо?
Вы должны отправить его через заголовок Authorization
со значением: Token your-token-value
.
В AngularJS вы можете сделать это через $httpProvider
в конфигурации модуля, например:
angular.module('mymodule', []).config(function($httpProvider) {
$httpProvider.defaults.headers.common['Authorization'] = 'Token your-token-value';
});
После вы сделаете это, каждый запрос сделан с $http
будет иметь этот заголовок.
Вы должны отправить токен в заголовок 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');
});
});
});
}
теперь мы получили маркер и в заголовках свойство $http.post
метода в angularjs, мы использовали этот маркер для входа в систему. Вот как вы можете использовать Django JWT в Angularjs, также взгляните на django jwt documentation
Надеюсь, вы это запустили, но если кто-то наткнулся на это, я нашел этот https://github.com/auth0/angular-jwt отлично. Вы можете закодировать все это, это не ракетостроение, но сэкономит вам время, и я пока не сталкивался с какими-либо проблемами. –