Странное Java-поведение сервлета с отображением фильтра - PullRequest
2 голосов
/ 27 февраля 2012

Я использую Eclipse IDE с плагином Google App Engine и Guice. Работая на Dev Server, я попробовал оба из них в web.xml и подсказке MyServletModule extends ServletModule:

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

и

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

оба, кажется, работают на

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

НО ... ни то, ни другое не работает:

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

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

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

РЕДАКТИРОВАТЬ : Решено . Вздох ... Я нашел этот кусок в документах 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 ]

2 голосов
/ 28 февраля 2012

Я нашел этот лакомый кусочек в документах 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 голос
/ 28 февраля 2012

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

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

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

...