Android:最好将哪些数据存储给授权用户一次并在下次启动应用程序时记住?

Android: What data is it better to store to auth user once and remember next time app is launched?

以下哪种方式可以更好地允许用户登录一次并避免在下次应用启动时再次登录?

1) 仅存储 UserID,然后每次都从服务器获取数据并加载配置文件? (问题:用户 ID 可以在 SharedPreferences 中进行操作,因此用户可以轻松劫持其他用户的身份)

2) 将用户名和密码存储在 SharedPreferences 中,然后在每次应用程序启动时验证用户并从服务器获取用户数据? (这样够安全吗?)

3) 首次从设备登录时 - 将设备 ID 存储在在线数据库中并将用户 ID 存储在 SharedPreferences 中,然后在每次启动应用程序时比较设备 ID,如果匹配 = 获取数据并自动登录,或者如果不匹配 = 请求再次登录?

有没有更好的方法?我想避免在我的应用程序中使用 SQLite 我不需要数据库,我的应用程序在线 MySQL 数据库相关并且它不断地与其通信而不是拥有本地数据库。

1) 和 2) 永远不要这样做,因为它会损害安全性,任何拥有 read/write 权限的人都可以轻松查看敏感信息。

3) 可以工作,但不能与设备 ID 一起使用,因为它也可以在生根时进行操作。我建议您使用 userid+password+deviceid 生成哈希并将其存储在数据库中。因此,每当您对服务器进行任何调用时,都使用此哈希来验证用户。

关于获取数据你不需要每次都这样做。如果数据不是很敏感,您可以将其存储在共享首选项中并使用它来减少网络调用。您可以使用它来显示首次使用时打开的屏幕,然后通过发出网络请求获取其他数据。也不会影响用户体验

您也可以在登录时从服务器发回一个大而无意义的 ID(例如 GUID)。服务器会将其存储在有效登录凭据列表中。也将其存储在 phone 上并将其发送回服务器以进行身份​​验证。没有办法伪造一个id,因为它不能从任何其他信息中推导出来,而且猜测一个的机会很小。