Как именно использовать фильтр для проверки входа - PullRequest
0 голосов
/ 29 апреля 2019

Когда я запускаю свое приложение, мой фильтр всегда запускается сначала, как я могу проверить логин и вызывает мой фильтр только после отправки, и как именно я могу проверить данные в фильтре?

Мой фильтр

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

    System.out.println("I'm in the filter");
    HttpServletRequest request2 = (HttpServletRequest) request;
    HttpSession session = request2.getSession();
    Object obj = (Object) session.getAttribute("user");

    if(obj==null) {
        request.getRequestDispatcher("ErrorPage.html").forward(request,response);
    } else {
        chain.doFilter(request,response);
    }}

Форма моего сообщения

<form action="LoginServlet" method="POST">
<div class="imgcontainer">
    <img src="img_avatar2.png" alt="Avatar" class="avatar">
</div>

<% System.out.println("Entrei no Login"); %>

<div class="container">
    <%--@declare id="uname"--%><%--@declare id="psw"--%><label for="uname"><b>Username</b></label>
    <input type="text" placeholder="Enter Username" name="uname" required>

    <label for="psw"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="psw" required>

    <button type="submit">Login</button>

</div>

<div class="container" style="background-color:#f1f1f1">
    <button type="button" class="cancelbtn">Cancel</button>

</div>

У меня вопрос, как фильтр используется для проверки логина? Я имею в виду, я чувствую, что намного проще использовать только сервлет и сравнивать имя пользователя и пароль, я не совсем понимаю, как будет обрабатываться форма отправки в фильтре.

Должен ли / Могу ли я отправить форму отправки непосредственно в Фильтр или мне нужен сервлет в середине этого сообщения?

1 Ответ

0 голосов
/ 29 апреля 2019

Во-первых, вы должны знать, что есть библиотеки, которые помогут вам избежать этого кода, но в некоторых случаях вы должны написать его самостоятельно.Фильтр - это код, который выполняется всякий раз, когда вы запрашиваете URL, и имеет некоторые правила, которые вы можете выбрать, и перенаправляет вас на ресурс.Вы можете определить любое правило, которое вам нужно, чтобы разрешить доступ к ресурсу.Обычно вам нужно найти идентификатор пользователя (обычно из файлов cookie) и найти его роли, каждая роль имеет свои ресурсы, к которым он может получить доступ.Обычно он должен храниться в базе данных.Если, например, определенный пользователь имеет роль: ROLE_ADMIN, а ROLE_ADMIN имеет доступ к домашней странице, то пользователь должен получить доступ к этой домашней странице.Если этот пользователь не имеет роли (или не является активным пользователем, если хотите), фильтр может перенаправить на неавторизованную страницу, которую вы определяете.Помните, что вы можете использовать сеансы для хранения доступа пользователей, вам не нужно вызывать службу репозитория каждый раз, когда пользователь запрашивает ресурс.Это общее представление о том, как вы можете это сделать, если вам нужны какие-либо подробности, вы можете проверить следующие ссылки:

https://www.baeldung.com/intercepting-filter-pattern-in-java

https://examples.javacodegeeks.com/enterprise-java/servlet/java-servlet-filter-example/

https://www.oracle.com/technetwork/java/filters-137243.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...