powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
20 сообщений из 20, страница 1 из 1
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269014
drno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Пытаюсь допилить сервлет - фильтр аутентификации.
Сразу скажу использовал идею с http://www.journaldev.com/1933/java-servlet-filter-example-tutorial

Получилось где-то так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public class AuthenticationFilter implements Filter {

    private ServletContext context;

    public void init(FilterConfig fConfig) throws ServletException {
        this.context = fConfig.getServletContext();
        this.context.log("AuthenticationFilter initialized");
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

        String uri = req.getRequestURI();
        this.context.log("Requested Resource::" + uri);

        HttpSession session = req.getSession(false);
        Object user_o = req.getSession().getAttribute("username");
        this.context.log("Фильтр аутентификации, пользователь::" + user_o);

        if (user_o == null && !(uri.endsWith("index.jsp") || uri.endsWith("LoginUser"))) {
            this.context.log("Неавторизованный запрос");
            res.sendRedirect("index.jsp");

        } else {
            // pass the request along the filter chain
            this.context.log("Авторизованный запрос, сессия:: " + session);
            chain.doFilter(request, response);
        }
        
    }

    public void destroy() {
        //close any resources here
    }
}




Проблема в том, что когда открывается форма валидации пользователя index.jsp - на ней не работает ни CSS, ни JS, не отображаются картинки.
Сервлет валидации логина - LoginUser
В чем может быть проблема?
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269037
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,
Код: java
1.
response.sendRedirect("/myservlet")


это внешний редирект. Т.е. равнозначен тому что юзверь сам набрал адрес в браузере.
Значит набери в браузере адрес без фильтра (пока выключи) и полностью отлаживай страничку.
Всё должно работать.
А потом фильтр и редирект на неё.
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269067
drno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
web.xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
    <filter>
        <filter-name>AuthenticationFilter</filter-name>
        <filter-class>AuthenticationFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>AuthenticationFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269072
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,
я так понимаю, без этого у него фильтр бы вообще не запускался и логи из него бы не шли.
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269075
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,
убери маппинг из web и набери в браузере
index.jsp
работает?
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269085
drno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

текст index.jsp

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  <html>
  <head>
    <title>Login</title>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
    <LINK REL="SHORTCUT ICON" HREF="ico/pic4.png">
    <script src="js/jquery-1.9.1.js" type="text/javascript"></script>
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/bootstrap-cosmo.min.css">
    <script src="js/bootstrap.js"></script>
    <link rel="stylesheet" href="css/font-awesome.min.css">
  </head>
  <body>
  <div class="container">
    <br>
    <br>
    <br>
    <h2>Валидация пользователя</h2>
    <br>
    <form method="POST" action="LoginUser" name="UserLoginForm">
      <table>
        <th></th>
        <th>Выполните вход:</th>
        <tr>
          <TD rowspan="3"><img src="img/picture4.png" alt="" border="0" align="left" /></TD>
          <td>Имя пользователя:</td>
          <td> <input type="text" name="username" size="20" /></td>
        </tr>
        <tr>
          <td>Пароль:</td>
          <td><input type="password" name="password" /></td>
        </tr>
        <td><input type="submit" value="Войти" /></td>
      </table>
      <br>

    </form>


  </body>
</html>



Если отключаю фильтр, то все отображается нормально.

С включенным - проблема....
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269094
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269097
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,

Вы замапили все ресурсы на свой фильтр. Соответственно, если аутентификация не пройдена, то все ваши CSS заменяются на JSP.
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269110
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drnoС включенным - проблема....
- F12 - жали?
- колесо пинали? Бензин смотрели? ))))
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269145
drno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообщем попробовал сделать так

<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

index.jsp подтянул все, что нужно при включенном фильтре

Какие риски будет такого фильтра?
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269152
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drnoКакие риски будет такого фильтра?
Очевидно что риск в том что анонимный пользователь видит все что не JSP. Например, если у вас есть REST сервисы, отчеты и всe остальное что не имеет jsp в конце имени.
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269164
drno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

в принципе пока кроме jsp ничего более не предполагается,
НО настораживает, доступ к сервлетам...

каким-то образом возможно прописать исключения?
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269167
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,

Перестать страдать фигней и взять Spring MVC + Spring Security. Этот геморрой с самостоятельным написанием всех лисапедов, до добра не доведет.
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269177
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drnoкаким-то образом возможно прописать исключения?
не понял в чём проблема пропустить в фильтре рессурсы CSS и проверить что запрашивается?
Либо кинуть их в ту папку которая не в корне фильтра
/css/файлы
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269185
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,

Еще любопытно зачем вам web.xml. Это же so last century.
https://blogs.oracle.com/swchan/entry/servlet_3_0_annotations
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269478
drno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Spring MVC + Spring Security - это конечно вариант,

НО мне хотелось выполнить эту задачу без framework: дополнительной прослойки между Java и девелопером.
В дальнейшем тратить время на интерпретацию ошибок Spring, считаю не самым лучшим вариантом...
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269492
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,

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

С другой стороны, конечно, надо через это пройти самому, чтобы потом, в свете набитых шишек, попробовать Spring и удивиться как много кода можно было не писать вовсе.
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269493
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,
ну дак делай.
В фильтре логи говорят что JSP запросил JS\CSS?
И ты их не пропустил?
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269499
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drno,
ну или F12 нажми наконец.
Что там пишет про ошибку?
Ослики без F12 ошибки не показывают.
...
Рейтинг: 0 / 0
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
    #39269531
drno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

свои же велосипеды всегда будут ближе )))
видимо я еще не прошел отведенный путь без Spring...

попробовал избавиться от аннтоций в web.xml

прописал в сервлете аутентификации

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
@WebServlet(
        name = "AuthenticationFilter",
        description = "Аутентификационный фильтр",
        urlPatterns = "/AuthenticationFilter"
)
@WebFilter("*.jsp")
public class AuthenticationFilter implements Filter {

    private ServletContext context;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.context = filterConfig.getServletContext();
        this.context.log("AuthenticationFilter initialized");
    }

    @Override
    public void destroy() {
        //close any resources here
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

        String uri = req.getRequestURI();
        this.context.log("Requested Resource::" + uri);

        HttpSession session = req.getSession(false);
        Object user_o = req.getSession().getAttribute("username");
        this.context.log("Фильтр аутентификации, пользователь::" + user_o);

        if (user_o == null && !(uri.endsWith("index.jsp") || uri.endsWith("LoginUser"))) {
            this.context.log("Неавторизованный запрос");
            res.sendRedirect("index.jsp");

        } else {
            // pass the request along the filter chain
            this.context.log("Авторизованный запрос, сессия:: " + session);
            chain.doFilter(request, response);
        }
        
    }

    }



пока полет нормальный
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]