Вызовите Servelt (FIlter), используя форму с запросом ajax (необходимо использовать заголовки авторизации)

Я не понимаю, почему это не работает. может быть, проблема в шаблоне URL? или я не понимаю поток данных? Обратите внимание, что изменить можно только файл login.jsp. Заголовок авторизации ссылки просмотра ответа не задан. Я пытаюсь найти все, что можно найти в Интернете, но это не работает. Может быть, вы можете подсказать мне учебник, чтобы сделать это. Заранее спасибо за ваше время.

логин.jsp

<html>
  <head>
<title>Login</title>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        $("#lsubmit").click(function(){
            var username = $("#lmail").val();
            var password = $("#lpsw").val();

            $.ajax({
                url : '/seller/*',
                method : 'POST',
                data: '{"username": "' + username + '", "password" : "' + 
                password + '"}',
                beforeSend : function(req) {
                    req.setRequestHeader('Authorization', "inserirebase48");
                }
            });
        });
    });
</script> </head>
<body>
 <form>
Email: <input type = "text" id = "lmail"><br>
Password: <input type = "password" id = "lpsw"><br>
<input type = "button" id = "lsubmit" value = "Login">
 </form>
</body>
</html>

часть web.xml

 <filter>
    <filter-name>filterAuthenticationSeller</filter-name>
    <filter-class>servlets.FilterAuthenticationSeller</filter-class>
</filter>
<filter-mapping>
    <filter-name>filterAuthenticationSeller</filter-name>
    <url-pattern>/seller/*</url-pattern>
</filter-mapping>

FilterAutheniticationSeller.java

package servlets;

 import utils.authenticationManager.AuthenticationService;

 import javax.servlet.*;
 import javax.servlet.annotation.WebFilter;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;

import static utils.Utils.createResponse_UNAUTHORIZED;
@WebFilter(filterName = "FilterAuthenticationSeller")

public class FilterAuthenticationSeller implements Filter {

    AuthenticationService authenticationService = new 
       AuthenticationService();


      public void init(FilterConfig config) { }


       public void destroy() { }


public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {

    if (servletRequest instanceof HttpServletRequest) {

        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

        // if registration :  POST (path: '/users' + body) go on the next servlet
        // if login : POST (path: '/users/0' + body ) go on the next servlet
        if (httpServletRequest.getMethod().equals("POST")
                && httpServletRequest.getServletPath().contains("users")
                && (httpServletRequest.getPathInfo() == null || httpServletRequest.getPathInfo().equals("/0"))) {
            filterChain.doFilter(servletRequest, servletResponse);
            return;
        }

        // else, check user and go on OR unauthorized
        String authorization = httpServletRequest.getHeader("Authorization");
        boolean authenticated = authenticationService.authenticateSeller(authorization);
        if (authenticated)
            filterChain.doFilter(servletRequest, servletResponse);
        else

            createResponse_UNAUTHORIZED((HttpServletResponse) servletResponse);
    }
}

}

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
238
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте удалить продавца/* из сообщения ajax и указать правильный целевой URL.

что вы имеете в виду под целевым URL в этом случае?

ROCCHEFILI 12.06.2019 16:01

Из сообщения ajax укажите также сервлет, который будет обрабатывать запрос.

niteshbisht 12.06.2019 16:02

Вы указали продавца/*

niteshbisht 12.06.2019 16:04

Хорошо, URL-адрес правильный, но теперь проблема с ответом ajax, я добавляю

                 .............
                success: function(){
                    alert('success!');
                },
                error: function (request, status, error) {
                    alert(request.status);
                }
                 ...........

статус 404, почему? Я не понимаю предпоследнюю строку кода в FilterAutheniticationSeller.java, она вызывает себя с помощью «doFilter»? я проверил и аутентифицировал свой параметр, это правда

Каково ваше контекстное корневое место, которое сначала, а затем продавец/*

niteshbisht 15.06.2019 16:58

Другие вопросы по теме