Dropwizard 2.x recommended way of registering ContainerRequestFilter?

118 views
Skip to first unread message

tuk

unread,
Apr 9, 2020, 4:21:10 AM4/9/20
to dropwizard-user
I am using 1.3.9 and working on moving to the latest dropwizard 2.x.

Right now I have a ContainerRequestFilter like below

@Authenticate public class BasicAuthenticator implements ContainerRequestFilter { @Context private HttpServletRequest servletRequest; private final CollectorChannel collectorChannel ; private final ConfigStore configStore; public BasicAuthenticator(final CollectorChannel collectorChannel, final ConfigStore configStore) @Override public void filter(ContainerRequestContext requestContext) throws IOException { String requestIpAddress = servletRequest.getRemoteAddr(); String requestHost = servletRequest.getRemoteHost(); logger.info("Request originates from IP {} Host {}", requestIpAddress, requestHost); String authHeader = requestContext.getHeaderString("Authorization"); Optional<User> user = AuthUtils.getUserBasicAuth(authHeader); if (!user.isPresent()) { requestContext.abortWith(responseUnAuthenticated()); return; } if (!isAuthentic(user.get())) { requestContext.abortWith(responseUnAuthenticated()); } if (!isValidLiSource(requestIpAddress) && !isValidLiSource(requestHost)) { requestContext.abortWith(responseUnauthorized()); return; } }
}

I register it like below

final BasicAuthenticator basicAuthenticator = new BasicAuthenticator(collectorChannel, configStore);environment.jersey().register(basicAuthenticator);


In migration doc it is mentioned like below-

Migrating resource instances with field context injections to Dropwizard 2.0 involves pushing the field into a parameter in the desired endpoint

But filter() method does not get the context as argument. Can someone let me know what is the recommended way to register a ContainerRequestFilter like above in 2.x ?

tuk

unread,
Apr 9, 2020, 10:51:54 AM4/9/20
to dropwizard-user
I have posted the same in StackOverflow also. But did not get any reply. Anyone any thoughts on this one?

Dimas Guardado

unread,
Apr 18, 2020, 9:36:31 PM4/18/20
to dropwizard-user
Hm, the migration guide talks about resource instances but not ContainerRequestFilters. For what it's worth I tried this out in 2.0.8 with a field-injected context and instance registration like you have written above and it seems to work for me. HttpServletRequest is injected and available when the filter is executed. What happens when you try it?

Debraj Manna

unread,
Apr 19, 2020, 11:09:32 AM4/19/20
to dropwiz...@googlegroups.com
Thanks it is working fine. I just got a bit confused with that documentation. So wanted to get it confirmed.

--
You received this message because you are subscribed to a topic in the Google Groups "dropwizard-user" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dropwizard-user/uW1aeIO9nLg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dropwizard-us...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dropwizard-user/9d4dfbab-16a7-4d49-bafd-2038e92e8850%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages