2012-02-27 1 views
2

Я использую Eclipse IDE с плагином Google App Engine и Guice. Запуск на Dev сервер, я попытался оба из них в web.xml и Guice MyServletModule extends ServletModule:Strange Java Servlet Filter-Mapping Behavior

<url-pattern>/user/*</url-pattern> 

и

filter("/user/*").through(LoginFilter.class); 

оба, кажется, работает для

http://www.domain.com/user/ 

НО .. как представляется, не работает для:

http://www.domain.com/user/myaccount.html 

Любая идея, почему? Согласно документам, /user/* должен работать для обоих, верно?

... Я подозреваю, что это как-то связано с файлом, так как я не могу фильтровать на "*.html".

EDIT: Решено. Вздох ... Я нашел эту пикантную в Документах GAE/J: "Note: Filters are not invoked on static assets, even if the path matches a filter-mapping pattern. Static files are served directly to the browser."

ответ

2

Я нашел эту пикантную в Документах GAE/J:

Note: Filters are not invoked on static assets, even if the path matches a filter-mapping pattern. Static files are served directly to the browser. 

Даже если все документы Java Servlet говорят, что вы можете сделать это, вы не можете сделать это в GAE/J.

1

Я обнаружил, что эта модель работает:

<security-constraint> 
    <web-resource-collection> 
     <url-pattern>/myFile.html</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 
</security-constraint> 

.. поэтому в случае, если указать файл, вероятно, будет фильтрованной!

+0

Спасибо. Да, эти собственные ограничения GAE действительно работают, ну, но мне нужно было добавить пользовательскую проверку сохраненных данных сеанса, которые я делаю в фильтре, которые ограничения мне не дали. Я просто превратил свой статический * .html в * .jsp. – DougA