перехватчик angular 7 не получит HttpErrorResponse из фильтра - PullRequest
0 голосов
/ 21 апреля 2019

Я студент, создающий веб-приложение для нашего учебного проекта с углом 7 для стороны клиента и трикотажом 1.x на стороне сервера.Я создал перехватчик в угловых, чтобы ловить любые ошибки.На моей стороне сервера есть фильтр входа в систему для проверки того, что клиент регистрируется перед доступом к сервисам.я хочу, чтобы перехватчик зафиксировал ошибку, идентифицировал ошибку по ее состоянию (401) и отреагировал на нее запрограммированным выходом из системы.По HttpErrorResponse, который я получаю из фильтра, пусто:

HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown 
Error", url: 
"http://localhost:8080/CouponManager.web/rest/AdminService/Companies", ok: 
false, …}
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, 
total: 0, type: "error", …}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: 
Map(0)}
message: "Http failure response for 
http://localhost:8080/CouponManager.web/rest/AdminService/Companies: 0 
Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
 url: 
"http://localhost:8080/CouponManager.web/rest/AdminService/Companies"
__proto__: HttpResponseBase

вот что я получаю из исключений других служб:

 error-interceptor.interceptor.ts:16 
 HttpErrorResponse {headers: HttpHeaders, status: 500, statusText: "OK", 
 url"http://localhost:8080/CouponManager.web/rest/AdminService/Companies", 
 ok: false, …}
 error: {message: "Company with name aaa already in database"}
 headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, 
 lazyInit: ƒ}
 message: "Http failure response for 
 http://localhost:8080/CouponManager.web/rest/AdminService/Companies: 500 
 OK"
 name: "HttpErrorResponse"
 ok: false
 status: 500
 statusText: "OK"
 url: 
 "http://localhost:8080/CouponManager.web/rest/AdminService/Companies"

_ _proto__: HttpResponseBase

вот фильтр:

@WebFilter({"/LoginFilter", "/rest/AdminService/*", 
             "/rest/CompanyService/*","/rest/CustomerService/*" })
public class LoginFilter implements Filter {

  public LoginFilter(){}

  public void destroy() {}

  @Override
  public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain filterChain) throws IOException, ServletException 
  {

   HttpSession session = ((HttpServletRequest) request).getSession(false);
   String method = ((HttpServletRequest) request).getMethod();

   //filter test
    if (session == null) {
     System.out.println("session is null");
    }

   //login and facade tests + cors request
   if (session != null 
     && session.getAttribute("clientFacade") instanceof CouponClientFacade  
     && (boolean)session.getAttribute("loggedIn") 
     || method.equals("OPTIONS")) {

     System.out.println("filter works");
     filterChain.doFilter(request, response);
  } else {
    System.out.println(" filter error ");;
    ((HttpServletResponse)response).sendError(401, "You are not logged 
    into the system");      
  }
 }
}

Я также приведу пример метода обслуживания, чтобы вы могли увидеть, с чем я работаю:

    @GET
@Path("Items")
public Response getAllItems() {
    HttpSession session = request.getSession(true);

     try {
    //code excuted here 
 } catch(Exception e) {
           String json = String.format("{\"message\": \"%s\"}", 
           e.getMessage());
       return Response.serverError().entity(json).build();
  }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...