安卓-保持用户登录状态

7
我正在尝试使用PHP和MySQLi为Android制作登录功能。但我不明白如何保持用户的登录状态?我看过一个简单的教程,其中有人使用SQLite来保存信息,但我不确定这是否是安全的方法。那么,我应该如何保存用户信息以保持其登录状态呢?
谢谢。

也许可以使用 Android 的 AccountManager? - Marco Acierno
你可以将会话令牌存储在共享首选项中。出于安全考虑,可以查看 secure-preferences https://github.com/scottyab/secure-preferences。它基本上只是在将内容存储在共享首选项之前加密了其内容。 - Dan Harms
2个回答

8

在Android中使用SharedPreferences

当您登录后,请使用它来存储数据

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();
//on the login store the login
editor.putLong("key_name", "long value"); 
editor.commit();

获取指定键的数据。
pref.getString("key_name", "");
                            ^
   default value if the user is not loggedin

登出时清除数据

editor.remove("name");
editor.commit();

请参考这个链接了解更多相关的IT技术。


1
我不确定PHP应用程序的登录过程。如果它使用身份验证令牌进行登录管理,则保存身份验证令牌。如果它不使用基于令牌的身份验证,那么可能是通过会话管理登录。在这种情况下,您可能需要保存用户ID和密码。
现在,在安全保存此类数据的情况下,我更喜欢使用Android Jetpack中的加密共享首选项
String masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC);
     
SharedPreferences sharedPreferences = EncryptedSharedPreferences.create(
           "secret_shared_prefs",
           masterKeyAlias,
           context,
           EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
           EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
       );
// use the shared preferences and editor as you normally would
SharedPreferences.Editor editor = sharedPreferences.edit();

您也可以使用不可预测的密钥来使您的数据更加安全。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接