具有改进功能的登录和登录

问题描述 投票:0回答:2

我在计算机上使用JSON数据库创建了一个简单的localhost API。我已经实现了主机可以创建新配置文件或登录到现有配置文件的功能。

"hosts": [
    {
      "id": 1,
      "login": "drey95music",
      "password": "8526000Qq",
      "email": "[email protected]",
      "eventName": "FDC Open Mic",
      "latitude": 41.924676,
      "longitude": -87.700266
    }],
"artists": [
    {
      "id": 1,
      "name": "MDQ",
      "phone": 7738375513,
      "isLocated": "true",
      "userId": 1
    }]

我的问题是,存储/记住/检查用户是否已登录以便其具有更多功能的最佳方法是什么?

谢谢。

java android json authorization retrofit
2个回答
1
投票

实际上,您可以根据自己的用例以多种不同的方式来实现。我个人认为,如果用户信息很小,或者您只需要存储一个令牌以将其传递给后续的API请求,那么将该令牌存储在SharedPreferences中可能是一个好主意。这样就可以从应用程序中的任何位置访问此文件,并且此存储是持久性的-也就是说,即使您正在关闭应用程序并重新打开它,它也会在持久性内存中显示。

话虽如此,如果您必须存储很多信息,我建议将这些信息存储在SQLite数据库中。不建议使用SharedPreferences存储大量数据。

我希望有帮助!


0
投票

通常,开发人员使用“共享首选项”来存储特定键的某些值。我做了一个通用的共享首选项类,并毫不犹豫地在每个android项目中使用它。

public class SaveInSharedPreference {

public static final String IS_LOGIN = "isLogin";

private final SharedPreferences pref;
private final SharedPreferences.Editor editor;

// shared pref mode
private final int PRIVATE_MODE = 0;

// Shared preferences file name
private static final String PREF_NAME = "PREF_NAME";

@SuppressLint("CommitPrefEdits")
public SaveInSharedPreference(Context context) {
    pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public void setBoolean(String key, boolean value){
    editor.putBoolean(key, value);
    editor.commit();
}

public boolean getBoolean(String key) {
    return pref.getBoolean(key, false);
}

public void setString(String key, String value) {
    editor.putString(key, value);
    editor.commit();
}

public String getString(String key) {
    return pref.getString(key, "");
}

public void setInteger(String key, int value) {
    editor.putInt(key, value);
    editor.commit();
}

public Integer getInteger(String key) {
    return pref.getInt(key, 0);
}

public void clearSavedInSharedPreference(){
    editor.clear();
    editor.commit();
}

}

在成功验证用户身份后,使用此行通过以下方式添加/更新密钥的值:]​​>

 new SaveInSharedPreference(this).setBoolean(IS_LOGIN, true);

您可以通过以下方式获得键的值:

 new SaveInSharedPreference(this).getBoolean(IS_LOGIN);

共享的首选项仅存储String,Boolean,Long,Float,Integer。如果要以共享首选项存储JsonObject,也可以执行此操作。但是您必须将JsonObject更改为字符串,然后将其存储并从字符串中的共享首选项中获取值,然后将其转换为下面给出的JsonObject:

存储/更新数据

 new SaveInSharedPreference(this).setString("user_data", new Gson().toJson(put_your_model_here));

获取数据

  new Gson().fromJson(new SaveInSharedPreference(this).getString("user_data"));

您还可以将列表存储为共享首选项。

© www.soinside.com 2019 - 2024. All rights reserved.