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

Когда пользователь не вошел в систему и переходит к !/someRestrictedPlace, он перемещается из-за LoggedInGatekeeper на страницу входа. После успешного входа в систему я хочу, чтобы пользователь был перенаправлен на !/someRestrictedPlace

Что я сделал, так это создал DefaultPlaceManagerImpl, расширяет PlaceManagerImpl, затем я использую следующий метод:

@Override

public void revealUnauthorizedPlace(String unauthorizedHistoryToken) {

       revealPlace(unauthorizedPlaceRequest, true);

}

Это способ сделать это, потому что комментарии в DefaultPlaceManage говорят, что это создаст бесконечный цикл?


person confile    schedule 24.06.2014    source источник


Ответы (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);
person Tomasz Kańka    schedule 25.06.2014
comment
Ваше решение не работает с токенами RootPlace. Поскольку placeManager.getHierarchyDepth() всегда 1 - person confile; 27.06.2014
comment
Что такое токены RootPlace? Если вы перейдете по URL-адресу без # PlaceManager перенаправит вас в какое-то место по умолчанию. Если это место будет несанкционированным, метод showUnautjorizedPlace перенаправит на #someDefault/login. Это активирует LoginPresenter с полями пользователя/пароля (или что-то еще для входа). В LoginPresenter после успешного входа вы проверяете hierarhyDepth и решаете, куда перенаправить дальше. - person Tomasz Kańka; 27.06.2014