@Override
  public void handleRequest(final HttpServerExchange exchange) throws Exception {
    final ServletRequestContext servletRequestContext =
        exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
    ServletRequest request = servletRequestContext.getServletRequest();
    if (request.getDispatcherType() == DispatcherType.REQUEST) {
      List<SingleConstraintMatch> constraints = servletRequestContext.getRequiredConstrains();
      SecurityContext sc = exchange.getSecurityContext();
      if (!authorizationManager.canAccessResource(
          constraints,
          sc.getAuthenticatedAccount(),
          servletRequestContext.getCurrentServlet().getManagedServlet().getServletInfo(),
          servletRequestContext.getOriginalRequest(),
          servletRequestContext.getDeployment())) {

        HttpServletResponse response =
            (HttpServletResponse) servletRequestContext.getServletResponse();
        response.sendError(403);
        return;
      }
    }
    next.handleRequest(exchange);
  }