#java #javascript #gwt #gwtp #gwt-platform
#java #javascript #gwt #gwtp #gwt-платформа
Вопрос:
Когда пользователь не вошел в систему и переходит к !/someRestrictedPlace, он перемещается из-за LoggedInGatekeeper на страницу входа. После успешного входа в систему я хочу, чтобы пользователь был перенаправлен на !/someRestrictedPlace
Что я сделал, так это создал DefaultPlaceManagerImpl расширяет PlaceManagerImpl затем я использую следующий метод:
@Override
public void revealUnauthorizedPlace(String unauthorizedHistoryToken) {
revealPlace(unauthorizedPlaceRequest, true);
}
Это способ сделать это, потому что в комментариях в DefaultPlaceManage говорится, что это создаст бесконечный цикл?
Ответ №1:
Вот мое решение.
В моем PlaceManager я перенаправляю на LoginPresenter, но с помощью #someRestrictedPlace/login
public void revealUnauthorizedPlace(String unauthorizedHistoryToken)
{
revealRelativePlace(new PlaceRequest(NameTokens.login));
}
В моем LoginPresenter после успешного входа в систему
if (placeManager.getHierarchyDepth() > 1)
placeManager.revealRelativePlace(-1);
else
placeManager.revealPlace(...some default place..., true);
Комментарии:
1. Ваше решение не работает с токенами RootPlace. Поскольку PlaceManager.getHierarchyDepth() всегда равен 1
2. Что такое «токены RootPlace»? Если вы перейдете по URL-адресу без «#», PlaceManager перенаправит на какое-либо место по умолчанию. Если это место будет несанкционированным, метод revealUnautjorizedPlace перенаправит на #someDefault/login . Это активирует LoginPresenter с полями пользователя / пароля (или что-то еще для входа в систему). В LoginPresenter после успешного входа в систему вы проверяете hierarhyDepth и решаете, куда перенаправлять дальше.