I need to add a filter in Vaadin that intercepts all requests

Viewed 163

I have set an attribute in the session that would be true or false. If that attribute is true I need vaadin to intercept all requests and redirect it to a new custom Vaadin page. I know there is a interface called VaadinServiceInitListener however I am having trouble redirecting the user to the custom page since UI.getcurrent() returns null.

Here is my code:

@Override
public void serviceInit(ServiceInitEvent serviceEvent) {
    serviceEvent.getSource().addSessionInitListener(initEvent -> {
        initEvent.getSession().addRequestHandler(globalRequestHandler());
    });

}

public RequestHandler globalRequestHandler() {
    return (session, vaadinRequest, response) -> {
        session.access(() -> {
            if (isSessionlocked()) {
                UI.getCurrent().navigate(MyCustomView.class);
            }
        });
        return false;
    };
 }
1 Answers

Try to redirect to the desired path

response.setStatus(HttpStatus.SC_TEMPORARY_REDIRECT);
response.setHeader(HttpHeaders.LOCATION, path);
Related