2016-08-06 8 views
0

私はこのコードを電子メールとパスワードの認証に使用しています。有効な資格情報を使用すると、アプリケーションを実行するとすぐに認証されます。しかし、ログアウトしていくつかの無効な資格情報で再度ログインしようとすると、認証が成功し、例外は発生しません。トランスポートは以前のデータ(有効な資格情報)をキャッシュしておき、再度ログインするときに使用しているようです。私はチェックし、変数 "email"と "password"に問題はない。無効な資格情報を最初に試し、後で有効な資格情報を試してみると、逆のことが起こります。皆さんは何が起こっているのか考えていますか?無効な資格情報で認証するために成功したJavamailの転送

これは、それが起こるのコードの一部です:

ありがとう!

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(); 

} 

答えて

関連する問題