protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) {

    String username = getUsername(request);
    String password = getPassword(request);
    String captcha = getCaptcha(request);
    boolean rememberMe = isRememberMe(request);
    String ip = IpUtil.getIpAddr((HttpServletRequest) request);
    String host = ip + IpUtil.getIpInfo(ip);

    char[] charPassword = null;

    if (StringUtils.isNotBlank(password)) {
      charPassword = password.toCharArray();
    }

    return new CaptchaUsernamePasswordToken(username, charPassword, rememberMe, host, captcha);
  }
 protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) {
   String username = "";
   // 验证是否是邮箱登陆
   String email = getUsername(request);
   String reg = "[\\w]+@[\\w]+.[\\w]+";
   // 告知此字符串是否匹配给定的正则表达式。
   if (email.matches(reg)) { // 匹配的是邮箱,那么进行邮箱登陆验证
     Member mem = memberService.retrieveEmail(email); // 通过该邮箱,看是否存在
     if (mem != null) { // 说明数据库存在
       // 是否禁用了该会员
       if (mem.getStatus().equals("disable")) {
         username = "******"; // 不让它登陆
       } else {
         username = mem.getMemberName(); // 取出用户名称,交给shiro去验证密码
       }
     } else { // 否则的话,把他当成用户名登陆验证
       username = email;
     }
   } else { // 否则按照用户名登陆验证
     Member member = memberService.retrieveName(email);
     if (member != null) {
       // 是否禁用了该会员
       if (member.getStatus().equals("disable")) {
         username = "******"; // 不让它登陆
       } else {
         username = email; // 取出用户名称,交给shiro去验证密码
       }
     }
   }
   String password = getPassword(request);
   String captcha = getCaptcha(request);
   boolean rememberMe = isRememberMe(request);
   String ip = IpUtil.getIpAddr((HttpServletRequest) request);
   String host = ip + IpUtil.getIpInfo(ip);
   char[] charPassword = null;
   if (StringUtils.isNotBlank(password)) {
     charPassword = password.toCharArray();
   }
   return new CaptchaUsernamePasswordToken(username, charPassword, rememberMe, host, captcha);
 }