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?
On Thursday, April 9, 2020 at 7:51:54 AM UTC-7, tuk wrote: > > I have posted the same in StackOverflow > <https://stackoverflow.com/questions/61117569/what-is-the-recommended-way-of-registering-containerrequestfilter-in-dropwizard> > > also. But did not get any reply. Anyone any thoughts on this one? > > On Thursday, 9 April 2020 13:51:10 UTC+5:30, tuk wrote: >> >> 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 >> <https://github.com/dropwizard/dropwizard/wiki/Upgrade-guide-1.3.x-to-2.0.x#context-injection-on-fields-in-resource-instances> >> 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 ? >> >> -- You received this message because you are subscribed to the Google Groups "dropwizard-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/dropwizard-user/9d4dfbab-16a7-4d49-bafd-2038e92e8850%40googlegroups.com.
