Я использую Google UserService, чтобы получить URL входа и выхода из системы для моего приложения Engine Angular Application и пытаюсь передать путь для перенаправления в качестве параметра запроса. Это пример Углового URL:
http://localhost:8080/#/dashboard
В Java я пытаюсь создать Url следующим образом:
String logoutUrl = UserServiceFactory.getUserService().createLogoutURL(redirectPath);
redirectPath - это строка параметров запроса "#/dashboard", как и ожидалось.
Проблема в том, что URL-адрес, созданный с включенным "#", не работает. Он просто перенаправляет себе новый URL-адрес. Ниже приведен пример того, как выглядит URL-адрес, который создается в UserService:
/_ah/logout?continue=%23%2Fdashboard
Если я просто передаю строку "/" в конечную точку, я получаю такой URL:
/_ah/logout?continue=%2F
Это работает так, как ожидалось, и загружает мое угловое приложение в корневом документе. Я бы очень хотел, чтобы мои UserService URLS работали так, как ожидалось. Есть идеи?
Это URL-адрес, с которого он перенаправляется по указанному выше URL-адресу:
http://localhost:8080/_ah/logout?continue=%23%2Fdashboard#/dashboard
Я нашел решение проблемы. UserService отлично работает, если я отправляю полный URL, а не только путь к ресурсу. Мой угловой код теперь выглядит следующим образом. Приложение получит URL-адрес входа в систему и затем перенаправит запрашиваемый URL-адрес при входе в систему. Это на самом деле в службе, но я упростил код для StackOverflow.
$http({
url: '/rest/user/login_uri?redirectPath=' + encodeURIComponent($location.absUrl()),
method: 'GET',
contentType: "application/json"
}).success(function (data) {
$window.location.href = data.uri;
}).catch(function (data) {
//Handle failed request....
});
Надеюсь, это поможет кому-то идти по дороге.