Использование Stripes Interceptor для предотвращения доступа к другим сервлетам - PullRequest
1 голос
/ 20 марта 2012

Я использую Stripes 1.5, и я использовал перехватчик (на основе этот пример ), чтобы предотвратить несанкционированный доступ к *.action страницам.

Теперь я хочу использовать то же самоеперехватчик для предотвращения доступа к сервлету.

Я добавил это в web.xml (DisplayChart - это сервлет, который я хочу защитить):

<filter-mapping>
    <filter-name>StripesFilter</filter-name>
    <servlet-name>DisplayChart</servlet-name>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

Но это не такt, метод перехватчика intercept не выполняется при доступе к пути сервлета DisplayChart (даже если я @Intercepts все LifeCycleStage).

Есть ли способ для перехватчика выполнитькогда другой сервлет принят?Или фильтры Stripes не предназначены для использования таким образом (и мне придется использовать простой Filter)?

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Фильтр Stripes нельзя использовать таким образом, поскольку фильтр Stripes на самом деле является фронт-контроллером Stripes, который отправляет только компонентам действия и, возможно, перехватчику Stripes до этого.

Итак, как вы уже предполагали, вам нужен обычный фильтр сервлетов.

1 голос
/ 20 марта 2012

Я не знаю, можно ли применить перехватчик Stripes к сервлету без Stripes.

Но я почти уверен, что не стоит.

Перехватчики Stripes специфичны для Stripes и жизненного цикла запросов Stripes. Запрос к простому сервлету не является запросом Stripes и не проходит этот жизненный цикл, даже если он проходит через фильтр Stripes. Такой запрос не должен использовать перехватчик Stripes, даже если это возможно.

Я предлагаю вам выделить код авторизации из вашего перехватчика Stripes в класс обслуживания, не зависящий от Stripes, а затем написать стандартный фильтр, который использует этот класс. В таком случае ваш перехватчик Stripes и ваш фильтр - это очень маленькие кусочки кода, которые передаются службе.

...