GWTP: выявить несанкционированный placerequest после успешного входа в систему

#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 и решаете, куда перенаправлять дальше.