2016-02-05 1 views
1

Я пытаюсь использовать ContainerRequestFilter для принудительной проверки подлинности на основе приложения Grizzly на основе Джерси.Джерси не запускается ContainerRequestFilter

Я создаю свой собственный конфиг ресурсов за счет расширения PackagesResourceConfig:

public class MainResourceConfig extends PackagesResourceConfig { 

    public MainResourceConfig() { 
     super("za.co.quinn.ws"); 
     Map<String, Object> properties = getProperties(); 
     properties.put(
       "com.sun.jersey.spi.container.ContainerRequestFilter", 
       "com.sun.jersey.api.container.filter.LoggingFilter;" + MainRequestFilter.class.getName() 
     ); 
     properties.put(
       "com.sun.jersey.spi.container.ContainerResponseFilters", 
       "com.sun.jersey.api.container.filter.LoggingFilter;" + MainResponseFilter.class.getName() 
     ); 
    } 
} 

Запрос фильтр предназначен для проверки подлинности:

@Inject 
Authorization authorization; 

@Override 
public ContainerRequest filter(ContainerRequest request) { 

    if (!request.getRequestUri().getPath().endsWith(".wadl")) 
     authorization.authorize(request); 

    return request; 
} 

Фильтр ответ для заголовков:

@Override 
public ContainerResponse filter(ContainerRequest request, ContainerResponse response) { 

    response.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); 
    response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, HEAD, POST, DELETE, PUT"); 
    response.getHttpHeaders().add("Access-Control-Allow-Headers", "Authorization, Content-Type"); 

    return response; 
} 

MainResponseFilter запускается, но не ContainerRequestFilter.

ответ

1

«MainResponseFilter запускается, но не ContainerRequestFilter».

Посмотрите на свои свойства, в основном отправить его, и сравнить их

...container.ContainerRequestFilter" 

...container.ContainerResponseFilters" 

Вы упускаете в s для запроса фильтров. Для того, чтобы избежать орфографических ошибок, как это, вы можете использовать константы

Вы также можете сделать

getContainerRequestFilters().add(new YourRequestFilter()); 
getContainerResponseFilters().add(new YourResponseFilter()); 
Смежные вопросы