Я реализую угловую страницу authentication app.Получить предыдущий URL-адрес для перехватчика углового запроса
Это машина событий, в которой используется перехватчик, поэтому, если какой-либо запрос приводит к ответу 401, он выдает модем входа в систему. Когда вход успешно завершен, он снова выполняет запрос (что также может привести к 403, если зарегистрированный пользователь не имеет достаточных привилегий для доступа к запрашиваемому ресурсу).
До сих пор все работает так, как ожидалось, за исключением того, что, когда пользователь отменяет процесс входа в систему, $location.path()
все еще указывает на запрашиваемый ресурс. Я хочу вернуться к предыдущему пути. Итак:
Что я ожидал
я ожидал, чтобы быть в состоянии получить «вызываемого абонента» URL так:
.factory('authInterceptor', ...
return {
// Append the authentication headers to every request
request: function(config) {
previousLocation = $location.path(); // <--- HERE
if(Session.exist) {
config.headers.Authorization = Session.token;
}
return config || $q.when(config);
},
Я ожидал, что эту линию, чтобы дать мне «вызываемого абонента» путь, но фактически дает мне запрошенный (угловой изменил его перед выполнением запроса).
Поставщик маршрута
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/admin', {
templateUrl: "/admin"
})
.otherwise({ redirectTo: '/' });
}])
Этот озорной маленький мальчик меняет свой путь до запроса. Думаю, я могу сделать что-то здесь по решению, но я не считаю это полезным, так как он полностью разрушит инкапсуляцию, заставляя меня разрешать каждый раз, когда я вызываю какой-либо защищенный ресурс, поэтому я могу передать текущий путь к некоторой службе в моем auth app.
Итак, Как получить предыдущий путь от перехватчика или некоторую услугу в приложении auth без явной отправки его из конфигурации поставщика маршрутов?
Я думаю, что это то, что мне нужно, я попробую и скажу вам. Только один вопрос. Почему вы разделили URL-адреса? –
В моем приложении мне нужно было знать, что является сегментом 1st/2nd/etc от URL-адреса, поэтому у меня есть этот массив '' uriSegment'' (точка 2 из сообщения). У меня были случаи, когда я хотел проверить '' if (uriSegment [0] == 'home) {/ * сделать что-то * /} ''. Вы можете удалить это, это не мешает запросам prev/curr. – tbutcaru
Так оно и было. Теперь я должен выяснить, что делать, когда окно входа в систему отклонено, но оно не реагировало на изменение маршрута, но нажатие на кнопку входа в систему; но это совсем другая история. Благодаря! –