GWTP 网守

GWTP Gatekeeper

我从 GWTP 做了一些例子

http://blog.arcbees.com/2015/10/27/gwtp-beginners-tutorial-toaster-launcher-part-2/#Gatekeeper

@DefaultGatekeeper
public class LoggedInGatekeeper implements Gatekeeper {
    private CurrentUser currentUser;

    @Inject
    public LoggedInGatekeeper(CurrentUser currentUser) {
        this.currentUser = currentUser;
    }

    @Override
    public boolean canReveal() {
        return currentUser.isLoggedIn();
    }
}

如果用户已登录,我们在这里授予访问权限。

是否可以找出要经过哪个页面(NameToken)?以及是否给他权限,取决于权限

当然,只需将 PlaceManager 注入您的 LoggedInGatekeeper 并调用 getCurrentPlaceRequest,然后将其与您的 NameToken 进行比较。沿着这些线的东西:

@DefaultGatekeeper
public class LoggedInGatekeeper implements Gatekeeper {
    private CurrentUser currentUser;
    private PlaceManager placeManager;

    @Inject
    public LoggedInGatekeeper(CurrentUser currentUser, PlaceManager placeManager) {
        this.currentUser = currentUser;
        this.placeManager = placeManager;
    }

    @Override
    public boolean canReveal() {
        PlaceRequest request = placeManager.getCurrentPlaceRequest();
        if (request.hasSameNameToken('someNameToken') {

           return currentUser.isLoggedIn();
        }
        return true;
    }
}