code: public void processRequest(RequestContext context, RequestSecurityProcessorChain processorChain) throws Exception {
          HttpServletRequest request = context.getRequest();
  
          if (isLoginRequest(request)) {
              logger.debug("Processing login request");
  
              String[] tenants = tenantsResolver.getTenants();
  
              if (ArrayUtils.isEmpty(tenants)) {
                  throw new IllegalArgumentException("No tenants resolved for authentication");
              }
  
              String username = getUsername(request);
              String password = getPassword(request);
  
              if (username == null) {
                  username = "";
              }
              if (password == null) {
                  password = "";
              }
  
              try {
                  logger.debug("Attempting authentication of user '{}' with tenants {}", username, tenants);
  
                  Authentication auth = authenticationManager.authenticateUser(tenants, username, password);
  
                  if (getRememberMe(request)) {
                      rememberMeManager.enableRememberMe(auth, context);
                  } else {
                      rememberMeManager.disableRememberMe(context);
                  }
  
                  onLoginSuccess(context, auth);
              } catch (AuthenticationException e) {
                  onLoginFailure(context, e);
              }
          } else {
              processorChain.processRequest(context);
          }
      }
docs: Checks if the request URL matches the {@code loginUrl} and the HTTP method matches the {@code loginMethod}. If
  it does, it proceeds to login the user using the username/password specified in the parameters.
  
  @param context        the context which holds the current request and response
  @param processorChain the processor chain, used to call the next processor