Android多次认证失败登录锁定功能的实现
2016-10-24 16:02
761 查看
解决的问题:
我们在开发Android app的登录功能时,为了加强app的安全性,很有必要实现这样一种功能,即多次登录认证失败,app锁定,直到一定时间之后才能够允许用户重新认证登录。姑且叫它登录锁吧。
这样的登录锁功能实现基于两个关键点:
1.System.currentTimeMillis()方法用于获取Java虚拟机的当前运行时刻。
2.SharedPreferences的使用,用于保存若干次登录失败时的Java虚拟机当前运行时刻。
下面是核心代码:
以上代码含有十分详细的注释,思路很清楚。
运行结果:
1.三次输入故意输入错误密码
2.第3次输入错误密码时
3.在等待期间输入,即使密码正确也不能够登陆,必须等到30s后才能登陆
4.等待时间过后输入正确的密码,成功跳转到欢迎界面
/****************************************************************/
源码地址:
http://download.csdn.net/detail/ldld1717/9662467
/****************************************************************/
我们在开发Android app的登录功能时,为了加强app的安全性,很有必要实现这样一种功能,即多次登录认证失败,app锁定,直到一定时间之后才能够允许用户重新认证登录。姑且叫它登录锁吧。
这样的登录锁功能实现基于两个关键点:
1.System.currentTimeMillis()方法用于获取Java虚拟机的当前运行时刻。
2.SharedPreferences的使用,用于保存若干次登录失败时的Java虚拟机当前运行时刻。
下面是核心代码:
package com.example.leidong.timertest; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { //用于显示正确的密码 private TextView textView; //用于输入用户的密码 private EditText editText; //跳转按钮,认证成功则完成跳转功能 private Button button; //3次登录机会 private int LOGIN_CHANCES = 3; //还剩几次登录机会的标志,初始值就是LOGIN_CHANCES private int count = LOGIN_CHANCES; //多次认证失败时需要等待的时间 private float WAIT_TIME = 30000L; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载MainActivity的布局 setContentView(R.layout.activity_main); //获取组件 init(); //按钮点击事件 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //拿到输入框中的输入内容 String password = editText.getText().toString().trim(); SharedPreferences sp = getSharedPreferences("data", MODE_PRIVATE); //输入错误时的时间,如果为空的话就取0L long errorTime = sp.getLong("errorTime", 0L); //获取当前时间 long recentTime = System.currentTimeMillis(); //如果当前时间与出错时间相差超过30s if(recentTime - errorTime > WAIT_TIME) { //认证成功,密码假设就是123456 if (password.equals(textView.getText().toString().trim())) { //认证成功,跳转到欢迎界面 Intent intent = new Intent(MainActivity.this, OtherActivity.class); //跳转到OtherActivity startActivity(intent); //跳转的同时结束MainActivity finish(); } //认证失败 else { //如果LOGIN_CHANCES次认证全部失败 if(count == 1) { //清除输入框内容 editText.setText(""); //count值重置 count = LOGIN_CHANCES; //Toast提醒 Toast.makeText(MainActivity.this, "连续" + LOGIN_CHANCES + "次认证失败,请您" + WAIT_TIME / 1000 +"秒后再登陆!", Toast.LENGTH_LONG).show(); //LOGIN_CHANCES次登录失败时,获取此时的Java虚拟机运行时刻并保存提交 errorTime = System.currentTimeMillis(); SharedPreferences sp1 = getSharedPreferences("data", MODE_PRIVATE); SharedPreferences.Editor editor = sp1.edit(); editor.putLong("errorTime", errorTime); editor.commit(); } //LOGIN_CHANCES次登录机会未用完 else{ //清除输入框内容 editText.setText(""); //剩余次数减1 count--; //Toast提醒 Toast.makeText(MainActivity.this, "您还有" + count + "次登录机会!", Toast.LENGTH_LONG).show(); } } } //LOGIN_CHANCES次登录机会全部用完,app锁定WAIT_TIME时间,在此期间登录无效,锁定 else{ //Toast提醒 Toast.makeText(MainActivity.this, "登录界面锁定中,请等待!", Toast.LENGTH_LONG).show(); } } }); } /** * 获取组件 */ private void init() { textView = (TextView)findViewById(R.id.textView); editText = (EditText)findViewById(R.id.editText); button = (Button)findViewById(R.id.button); } }
以上代码含有十分详细的注释,思路很清楚。
运行结果:
1.三次输入故意输入错误密码
2.第3次输入错误密码时
3.在等待期间输入,即使密码正确也不能够登陆,必须等到30s后才能登陆
4.等待时间过后输入正确的密码,成功跳转到欢迎界面
/****************************************************************/
源码地址:
http://download.csdn.net/detail/ldld1717/9662467
/****************************************************************/
相关文章推荐
- android 腾讯微博分享功能实现及自定义webview认证
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Android开发之自己主动登录功能的实现
- Android实现登录功能demo示例
- Android——SharedPreferences实现登录界面的记住密码和自动登录功能
- android 腾讯微博分享功能实现及自定义webview认证
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Android PHP JSON 登录注册功能实现
- Android开发之自动登录功能的实现
- Android实用方法—HttpClient实现登录功能
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Android应用程序开发教程:实现一个功能比较完善的登录对话框
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Suse Linux 多次登录失败锁定用户及解锁
- Android实现登录界面和功能实例
- 实现新浪微博授权一次多次登录的功能
- 脚本实现extmail多次登录失败拒绝登录
- Android开发实现新浪账号授权登录的功能
- Android——SharedPreferences实现登录界面的记住密码和自动登录功能
- Android实现新浪微博SSO授权登录分享文字图片等功能