Я построил отдых api, теперь пришло время обрабатывать данные с угловыми. Для этого я создал службу для подключения к моим ресурсам.Заголовки широковещательной передачи во все ресурсы после вызова другого ресурса
Так что я имею:
angular.module("myServiceRest", ['ngResource'])
.factory("myService", function ($rootScope, $resource) {
var apiData = $resource(
"/api", {},
{
"getContains": {method: 'GET', isArray: false, url: "/api/users/:userid/:yearid/:groupeid/:levelid", headers: $rootScope.headers},
"getContain": {method: 'GET', isArray: false, url: "/api/Contains/:containid", headers: $rootScope.headers},
"postAuthTokens": {method: 'POST', url: "/api/auth-tokens"}
});
return {
getGroupesContenus: function (user_id, year_id, groupe_id, level_id) {
return apiData.getContains({userid: user_id, yearid: year_id, groupeid: groupe_id, levelid: level_id});
},
getContain: function (contain_id) {
return apiData.getContain({containid: contain_id});
},
postAuthTokens: function(userData) {
apiData.postAuthTokens(userData, function (data) {
console.log("success !");
$rootScope.headers = {
"Content-Type": "application/json",
"Authorization": "Basic ZWRnYXJrYW1kZW06TkVXVE9O",
"Accept": "application/json",
"X-Auth-Token": data.value
};
}, function (error) {
console.log(error.data);
})
}
}
});
Вот у меня есть 3 ресурса:
- getContains:/API/пользователей /: идентификатор пользователя /: yearid /: groupeid /: levelid
- getContain :/апи/Содержит /: containid
- postAuthTokens:/API/Auth-токены
Чтобы получить доступ к getContains и getContain (после входа в систему), пользователю необходимо установить токен (X-Auth-Token), полученный через postAuthTokens.
В основном, когда пользователь входит в систему, он вызывает ресурс POST postAuthTokens и извлекает свой токен (хранящийся в базе данных) через data.value и должен установить этот токен в X-Auth-Token, чтобы продолжить ,
Для этого я создал $ rootScope, и сразу же, когда пользователь получить войти, я установил:
$rootScope.headers = {
"Content-Type": "application/json",
"Authorization": "Basic ZWRnYXJrYW1kZW06TkVXVE9O",
"Accept": "application/json",
"X-Auth-Token": data.value //Set the user token
};
Но это не работает. Это как $ rootScope.headers получило после повторной инициализации вызова после идентификации лексем, потому что, когда журнал пользователя в I получил эту ошибку в моем Chrome консоли после:
angular.js:14328 Possibly unhandled rejection: {"data":{"error":{"code":500,"message":"Internal Server Error","exception":[{"message":"X-Auth-Token header is required","class":"Symfony\\Component\\Security\\Core\\Exception\\BadCredentialsException","trace":...
Моих $ rootScope.headers не был установлены на всех.
Так как я могу транслировать мои $ rootScope.headers во все заголовки ресурсов после вызова postAuthTokens?
Thx, это то, что я сделал и он работает – kabrice