2013-09-07 4 views
1

내 GWT 프로젝트에서 Activity/Place을 사용하고 있습니다. 현재 사용자가 로그인하지 않은 경우, 어떤 사용자가 Place로 이동하면 사용자가 로그인 페이지로 리디렉션되고 사용자가 로그인하면 그 사용자로 이동하게됩니다. Place. 이 논리를 효율적으로 구현하는 방법은 무엇입니까? MyProtectedPlace에 대한 지속적인 요청이 취소되지 않기 때문에 GWT : PlaceChangeEvent를 취소하는 방법?

 eventBus.addHandler(PlaceChangeRequestEvent.TYPE,new PlaceChangeRequestEvent.Handler() { 
      @Override 
      public void onPlaceChangeRequest(PlaceChangeRequestEvent event) { 
       Place newPlace = event.getNewPlace(); 
       if (newPlace instanceof MyProtectedPlace && userNotLoggedIn()) { 
        event.goTo(new LoginPlace()); 
       } 
      } 
     }); 

불행히도 작동하지 않습니다

나는 PlaceChangeRequestEvent 후크하려고 노력했다. 예 사용자가 현재 위치에서 탐색하려고 할 때이를 확인할 수 있지만 프로그램 전체에 확인 논리가 흩어져있어 효율적이지 않습니다.

감사합니다.

답변

0

당신은 조금 다르게 할 수 있습니다. SecuredPlace라는 장소에 로그인 한 후에 만 ​​액세스 할 수있게하려고한다고 가정 해 봅시다. 해당 SecuredActivity 있습니다.

당신이 할 수있는 일은, SecuredActivity를 시작할 때 사용자가 로그인했는지 확인하는 것입니다. 그렇지 않으면 placeController.goTo (새 LoginPlace())를 수행하십시오.

사용자가 로그인 한 경우 계속하십시오. 내 생각으로는이 단계를 건너 뛸 방법이 없다.

하지만 장소가 아닌 백엔드에 대한 네트워크 호출에서 보안을 구현해야합니다. 백엔드에 전화 할 때마다 사용자가 인증되고 올바른 자격 증명이 있는지 확인합니다. 그렇지 않으면 콜백을 가로 채고 403 오류인지 확인한 다음 자동으로 로그인 페이지로 리디렉션합니다. 백엔드 호출이 보안되지 않으면 장소 확보가 쓸모가 없기 때문입니다.