private boolean manualLogin(HttpServletRequest request, HttpServletResponse response) {
    String userName = request.getParameter("userName");
    String password = request.getParameter("password");
    String captcha = request.getParameter("captcha");
    if (userName == null || password == null || !validateCaptcha(captcha, request)) {
      return false;
    }

    String adminLogin = request.getParameter("adminLogin");
    Provider provider = null;
    if ("1".equals(adminLogin)) {
      Admin loginAdmin = adminMapper.selectByName(userName);
      if (loginAdmin == null) {
        LOGGER.warn("not found admin user from database by name [{0}]", userName);
        return false;
      }

      provider = newProviderByAdmin(loginAdmin);
    } else {

      provider = providerService.findByUserName(userName);
      if (provider == null) {
        LOGGER.debug("not found provider user from database by name [{0}]", userName);
        return false;
      }
      provider.setUserName(userName);
    }
    // 设置配送区域
    provider.setDeliveryArea(genProviderDeliveryArea(provider));

    password = CookieHelper.md5(password);
    boolean login = doLogin(provider, password, false, request);

    if (login) {
      int cookieMaxAge = -1; // cookies auto-expire
      if (Boolean.parseBoolean(request.getParameter("autoLogin"))) {
        cookieMaxAge = Integer.parseInt(getProperty(COOKIE_MAX_AGE));
        CookieHelper.addCookies(
            provider.getProviderId().toString(),
            password,
            adminLogin,
            cookieMaxAge,
            request,
            response);
      }
    }

    return login;
  }