日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android使用token维持登陆状态的方法

發布時間:2023/12/13 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android使用token维持登陆状态的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是token

token(令牌)是一串唯一的字符串,通常由服務端生成,在注冊完成時返回給客戶端,用來標識此用戶,客戶端將此字符串存儲在本地。在以后的網絡請求時,客戶端先查詢本地的token,如果有則直接使用此令牌進行網絡請求,沒有則提示未登錄,轉到登陸注冊界面。

此外,還可以在服務端或者客戶端添加過期判別機制。

token的作用

token可以顯著減少服務端對用戶表的查詢,同時使用戶不必每次都登陸,提高了系統的可用性與健壯性。

使用SharedPreferences保存token

獲取token并保存

NetWorks.regPost(user, password, email, tel, new Observer<User>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) { Log.e("LoginActivity",e.getLocalizedMessage()+"--"+e.getMessage());}@Overridepublic void onNext(User user) {if(user.getmMessage().equals("success")){MainActivity.instance.finish();//結束原來的主頁面Toast.makeText(getApplicationContext(),"注冊成功",Toast.LENGTH_SHORT).show();//token保存到本地SharedPreferences sp = getSharedPreferences("loginToken", 0);SharedPreferences.Editor editor = sp.edit();editor.putString("userId",user.getmUserId());editor.putString("userName",user.getmUserName());editor.putString("phone",user.getmPhone());editor.putString("email",user.getmEmail());editor.putString("headImageUrl",user.getmHeadImageUrl());editor.commit();Intent i = new Intent(RegActivity.this,MainActivity.class);startActivity(i);finish();}else{Toast.makeText(getApplicationContext(),"注冊失敗"+user.getmMessage(),Toast.LENGTH_SHORT).show();}}});

我使用的是retrofit框架進行網絡請求,上文是實現注冊功能的函數,在onNext()函數中獲取服務端返回的結果,這個框架自動把返回的json數據解析為對應的類對象(即上文中的user對象)。因為token的本質是唯一的字符串,userId滿足這個要求,因為userId是由服務端生成且唯一,故我將userId作為token使用。

進行網絡請求前查詢本地token

比如點擊側邊欄的頭像,如果未登錄則需要跳轉到登陸界面,已經登陸則進入個人信息界面。這時候,就需要查詢本地token進行判別。

private void initData() {sp = getSharedPreferences("loginToken", 0);name = sp.getString("userId", null);userName = sp.getString("userName", null);email = sp.getString("email", null); } @Overridepublic void onClick(View view) {switch (view.getId()) { case R.id.imageView:if (name == null) {Intent i = new Intent(MainActivity.this, LoginActivity.class);startActivity(i);} else {Log.d("用戶ID", name);Intent i = new Intent(MainActivity.this, PersonInfoActivity.class);startActivity(i);}break;}}

備注

在此例中,我使用userId作為token,但并不建議這么做,雖然這樣很簡單。因為userId顯然無法判別是否過期,如果我們需要實現token過期的判別,則可以采用將userId與日期拼接的方式。

此外,為了安全起見,不要在客戶端生成token。

轉載于:https://www.cnblogs.com/zhujiabin/p/7291891.html

總結

以上是生活随笔為你收集整理的Android使用token维持登陆状态的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。