Android:什么样的数据最好一次存储给用户进行身份验证,并记住下一次应用程序启动时的数据?

Android:什么样的数据最好一次存储给用户进行身份验证,并记住下一次应用程序启动时的数据?,android,Android,以下哪种方式更适合允许用户登录一次并避免在下次应用程序启动时再次登录 1) 只存储用户ID,然后每次从服务器获取数据并加载配置文件?(问题:用户ID可以在SharedReference中被操纵,这样用户就可以轻易劫持其他用户的身份) 2) 在SharedReferences中存储用户名和密码,然后在每次应用程序启动时对用户进行身份验证,并从服务器获取用户数据?(这够安全吗?) 3) 在首次从设备登录时-将deviceID存储在在线数据库中并将userID存储在SharedReferences中,

以下哪种方式更适合允许用户登录一次并避免在下次应用程序启动时再次登录

1) 只存储用户ID,然后每次从服务器获取数据并加载配置文件?(问题:用户ID可以在SharedReference中被操纵,这样用户就可以轻易劫持其他用户的身份)

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

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

也许有更好的办法吗?我想避免使用SQLite,因为我的应用程序不需要数据库,我的应用程序是在线MySQL数据库相关的,它不断与之通信,而不是使用本地数据库

1)和2)不应这样做,因为这会损害安全性,任何具有读/写权限的人都可以轻松查看敏感信息

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


关于获取数据,您不必每次都这样做。如果数据不是很敏感,您可以将其存储在共享首选项中,并使用它来减少网络呼叫。您可以使用它来显示第一次使用时打开的屏幕,从而通过发出网络请求获取额外数据。它也不会干扰用户体验

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

只需使用AccountManager类即可