今天在学习的过程中,要做登陆失效的功能,所以就找了些资料,好好看了一下,研究了一番,慢慢的做出来了!
比如:你在一个手机端登陆了账号,在另外的一个手机端也登陆了账号,此时,前一个手机端的账号会提示登陆失效。
意思是只能存在一个账号,这个其实不是很难。
每次登陆的时候会存在一个Token,每次登陆的Token是不一样的!
下面贴一下前端的一些小代码:
在异步网络请求里面判断返回的异常是否是登陆失效:
@Override protected void onPostExecute(BusinessResult result) { if (mCallback != null && !isCancelled()) { if (result.success) { mCallback.onSuccess(result.returnObject); } else { mCallback.onError(result.exception); if (result.exception.getMessage().equals(BusinessException.TOKEN_INVALID)) { TokenInvalidUtil.showDialog(); } } } }
用户登录失效处理工具类
public class TokenInvalidUtil { private static AlertDialog sAlertDialog; public static void setDialog(AlertDialog alertDialog) { sAlertDialog = alertDialog; } public static void showDialog() { if (sAlertDialog != null && !sAlertDialog.isShowing()) { sAlertDialog.show(); } } }
在application初始化:
TokenInvalidUtil.setDialog(createDialog());
private AlertDialog createDialog() { AlertDialog ad = new AlertDialog.Builder(this).setMessage(R.string.dialog_token_invalid_message).setPositiveButton(R.string.dialog_token_invalid_button, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // PreferenceUtil.clear(); Intent intent = new Intent(getInstance(), LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); App.getInstance().exit(); } }).create(); ad.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); ad.setCanceledOnTouchOutside(false); ad.setCancelable(false); return ad; }
前端大概的代码就是这些,具体细节不做讲解了!
在APP应用中只要设计有Token查询的方法的时候,就会提示登陆失效!