0

所以我有一个 RequestHandler(使用 VaadinServiceInitListener):

public class ApplicationServiceInitListener implements VaadinServiceInitListener {

@Override
public void serviceInit(ServiceInitEvent event) {
    event.addRequestHandler((session, request, response) -> {
        ...
    });

}

在 RequestHandler 中,我想检查用户是否登录。到目前为止,一切都很好。

如果用户已登录,则该请求将被照常处理。如果没有,我想将他重定向到登录页面。请求处理程序有可能吗?

我使用了 UI 类的导航方法,如下所示:

UI.getCurrent().navigate("..");

但问题是在请求时,没有实例化 UI,所以我会得到一个 NPE。

4

1 回答 1

4

不是您确切问题的答案(是否可以完成),但通常这会进入BeforeEnterListener(您可以重新路由的地方),如路由生命周期文档中所述。有关示例,请参见spring 安全教程中的代码:

void beforeEnter(BeforeEnterEvent event) {
    if (!LoginView.class.equals(event.getNavigationTarget()) && !SecurityUtils.isUserLoggedIn()) {
        event.rerouteTo(LoginView.class);
    }
}
于 2020-10-21T15:47:18.520 回答