Я использую dropwizard. Я создал фильтр для аутентификации пользователя. Здесь в коде sessionRepository
это тот, который делает все разговоры с таблицей сеансов в базе данных. Функция отлично работает при использовании внутри ресурсов, но не работает при использовании ContainerRequestFilter
. Давать ошибку:
java.lang.IllegalStateException: Менеджер сущностей без привязки к потоку.
@Slf4j
@javax.ws.rs.ext.Provider
@Authenticate
public class TestFilter implements ContainerRequestFilter {
public static final String USER_ID = "X_USER_ID";
@Context
private ResourceInfo resourceInfo;
private Provider<SessionRepository> sessionRepository;
private Provider<DeviceRepository> deviceProvider;
@Inject
public TestFilter(Provider<SessionRepository> sessionRepository,
Provider<DeviceRepository> deviceProvider) {
this.sessionRepository = sessionRepository;
this.deviceProvider = deviceProvider;
}
@Override
public void filter(ContainerRequestContext request) {
Optional<Session> session = sessionRepository.get().getActiveSessionBySessionId("sample-session");
log.info("Inside filter");
}
}