2016-08-06 2 views
0

전자 메일과 암호를 인증하는이 코드가 있습니다. 유효한 자격 증명을 사용하는 경우 앱을 실행하자마자 인증됩니다. 하지만 로그 아웃 한 후 일부 잘못된 자격 증명으로 다시 로그인하려고 시도하면 인증 성공이 계속되고 예외가 발생하지 않습니다. 전송 도구가 캐시 된 이전 데이터 (올바른 자격 증명)를 유지하고 다시 로그인 할 때 사용하는 것 같습니다. 나는 체크했다. 변수 "email"과 "password"에 문제가 없다. 잘못된 자격 증명을 먼저 시도하고 나중에 유효 한 자격 증명을 시도하면 반대가 발생합니다. 무슨 일이 일어나고 있는지 당신들은 알고 있습니까?유효하지 않은 자격 증명으로 인증 성공을위한 자바 메일 전송

이것은 코드 조각입니다.

고마워요!

public void check_user(final String email, final String password){ 
    final ProgressDialog pb = new ProgressDialog(this); 
    pb.setIndeterminate(true); 
    pb.setTitle("Verificando usuário"); 
    pb.setMessage("Por favor, aguarde..."); 
    pb.setCancelable(false); 
    pb.show(); 
    Thread t = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      Properties props = new Properties(); 

      props.put("mail.smtp.host", "smtp.office365.com"); 
      props.put("mail.smtp.starttls.enable", "true"); 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.port", "587"); 

      Session session = Session.getDefaultInstance(props, 
        new javax.mail.Authenticator() { 
         //Authenticating the password 
         protected PasswordAuthentication getPasswordAuthentication() { 
          return new PasswordAuthentication(email, password); 
         } 
        }); 

      try { 
       transport = session.getTransport("smtp"); 
       transport.connect(email, password); 
       transport.close(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(LoginActivity.this, "Usuário e/ou senha inválidos.", Toast.LENGTH_LONG).show(); 
         pb.dismiss(); 
        } 
       }); 
       return; 
      } 
      SharedPreferences.Editor data = getSharedPreferences("user_data", 0).edit(); 


      data.putString("username", email).commit(); 
      data.putString("password", password).commit(); 
      data.putBoolean("isLogged", true).commit(); 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        get_in(); 
       } 
      }); 

     } 
    }); 
    t.start(); 

} 

답변

관련 문제