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

Пытаюсь допилить сервлет - фильтр аутентификации.
Сразу скажу использовал идею с 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
06.07.2016, 15:56
    #39269037
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
drno,
Код: java
1.
response.sendRedirect("/myservlet")


это внешний редирект. Т.е. равнозначен тому что юзверь сам набрал адрес в браузере.
Значит набери в браузере адрес без фильтра (пока выключи) и полностью отлаживай страничку.
Всё должно работать.
А потом фильтр и редирект на неё.
...
Рейтинг: 0 / 0
06.07.2016, 16:15
    #39269067
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
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
06.07.2016, 16:17
    #39269072
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
drno,
я так понимаю, без этого у него фильтр бы вообще не запускался и логи из него бы не шли.
...
Рейтинг: 0 / 0
06.07.2016, 16:20
    #39269075
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
drno,
убери маппинг из web и набери в браузере
index.jsp
работает?
...
Рейтинг: 0 / 0
06.07.2016, 16:24
    #39269085
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
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
06.07.2016, 16:34
    #39269094
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
...
Рейтинг: 0 / 0
06.07.2016, 16:38
    #39269097
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
drno,

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

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

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

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

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

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

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

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

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

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

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

С другой стороны, конечно, надо через это пройти самому, чтобы потом, в свете набитых шишек, попробовать Spring и удивиться как много кода можно было не писать вовсе.
...
Рейтинг: 0 / 0
07.07.2016, 10:24
    #39269493
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
drno,
ну дак делай.
В фильтре логи говорят что JSP запросил JS\CSS?
И ты их не пропустил?
...
Рейтинг: 0 / 0
07.07.2016, 10:36
    #39269499
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
drno,
ну или F12 нажми наконец.
Что там пишет про ошибку?
Ослики без F12 ошибки не показывают.
...
Рейтинг: 0 / 0
07.07.2016, 11:11
    #39269531
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему сервлет - фильтр аутентификации на форме ввода имени и пароля срезает CSS, JS / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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