1

Activity/Place在我的 GWT 项目中使用,如果当前用户未登录,当他导航到 somePlace时,用户将被重定向到登录页面,如果用户已登录,那么他将被带到那个Place. 如何有效地实现这个逻辑?

我试图挂钩 PlaceChangeRequestEvent:

        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());
                }
            }
        });

不幸的是,它不起作用,因为正在进行的请求MyProtectedPlace没有被取消。是的,当用户即将离开当前位置时,我可以检查这一点,但这不会有效,因为检查逻辑将分散在整个程序中。

谢谢。

4

1 回答 1

0

我认为你可以做一些不同的事情。假设您希望只有在登录后才能访问名为 SecuredPlace 的地方。您有一个相应的 SecuredActivity。

您可以做的是,当您启动 SecuredActivity 时,检查您的用户是否已登录。如果没有,请执行 placeController.goTo(new LoginPlace ())。

如果用户已登录,则继续。由于框架调用了 start ,因此无法跳过此步骤,我认为这使其足够安全。

但是您应该在对后端的网络调用上实施安全性,而不是在地方上。每次调用后端时,都会检查用户是否已通过身份验证并具有正确的凭据。如果不是,您可以拦截回调,检查它是否是 403 错误,然后自动重定向到您的登录页面。因为如果您的后端调用不安全,那么保护您的位置是无用的。

于 2013-12-26T23:24:00.143 回答