Я пытаюсь создать экран входа для своего приложения, который отключает кнопку входа в систему в течение 5 минут после 3 неудачных попыток входа в систему.Временно отключить логин после неудачных попыток
Однако в моем приложении кнопку можно легко включить, закрыв приложение и снова запустив его.
Как исправить это?
Код:
public class LogIn extends Activity {
EditText username = null;
EditText password = null;
Button loginbutton = null;
int counter = 2;
String user = "admin";
String pw = "password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log_in);
username = (EditText) findViewById(R.id.username);
password = (EditText) findViewById(R.id.password);
loginbutton = (Button) findViewById(R.id.loginbutton);
loginbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{ String name = username.getText().toString();
String pass = password.getText().toString();
if (name.equals(user) && pass.equals(pw))
// Successful Login
{ Intent intent = new Intent(LogIn.this, MainApp.class);
startActivity(intent);
}
else if (name.equals("") || pass.equals(""))
// Missing username or password
{ Toast alert = Toast.makeText(LogIn.this, "Please enter a username or password", Toast.LENGTH_SHORT);
alert.show();
}
else if (counter == 0)
// Disable button after 3 failed attempts
{ loginbutton.setEnabled(false);
Toast alert = Toast.makeText(LogIn.this, "Login Disabled for 5 mins", Toast.LENGTH_SHORT);
alert.show();
final Handler handler = new Handler();
handler.postDelayed(new Runnable()
{ @Override
public void run()
{ loginbutton.setEnabled(true);
counter = 2;
}
}, 300000);
}
else
// Wrong password
{ Toast alert = Toast.makeText(LogIn.this, "Wrong Credentials", Toast.LENGTH_SHORT);
alert.show();
counter--;
};
}
});
};
}
Не должны ли все это быть реализованы на стороне сервера? – Bathsheba
код выглядит хорошо. какая часть его не работает? – Kshitij
Самая неприятная вещь о паролях - это блокировка ввода в течение нескольких минут. (Второй - это набор правил типа «ваш пароль должен содержать символы, по крайней мере, из двух алфавитов».) Несколько секунд было бы достаточно, чтобы сделать грубую силу нецелесообразной. – 18446744073709551615