Android应用程序如何存储状态

Android应用程序如何存储状态,android,Android,我想问一下,在我们从手机登录应用程序后,密码存储在哪里。我需要知道在移动应用程序中如何保存状态的工作机制。没有存储用户凭据的特定位置。问题是我们应该能够在我们写东西的地方读写 为此,我们主要使用SharedReferences。这是一个保存在特定于该应用程序的文件夹中的文件。当我们卸载应用程序或清除数据时,此选项将被清除。它将数据存储为键、值对 实际上,我们不存储用户名和密码。当我们向服务器提交用户名和密码时,如果凭据有效,我们将得到一个访问令牌作为响应。这将是一个字符串,保存在SharedRe

我想问一下,在我们从手机登录应用程序后,密码存储在哪里。我需要知道在移动应用程序中如何保存状态的工作机制。

没有存储用户凭据的特定位置。问题是我们应该能够在我们写东西的地方读写

为此,我们主要使用
SharedReferences
。这是一个保存在特定于该应用程序的文件夹中的文件。当我们卸载应用程序或清除数据时,此选项将被清除。它将数据存储为键、值对


实际上,我们不存储用户名和密码。当我们向服务器提交用户名和密码时,如果凭据有效,我们将得到一个
访问令牌作为响应。这将是一个字符串,保存在
SharedReferences
中。下次打开应用程序时,我们首先检查SharedReferences中是否已经存在令牌。如果是,我们直接转到应用程序内部,任何服务器调用都可以使用此令牌进行身份验证。如果这样的令牌不存在,我们转到登录屏幕。

它保存在数据库中,但不是纯文本。在存储密码之前,会对密码进行哈希运算,在检查登录信息时,会对给定密码进行哈希运算,并使用数据库中的哈希密码进行验证。

可以通过多种不同的方式实现这一点

如果您使用后端服务对您的用户进行身份验证,例如,他们的用户名和密码在服务器端进行身份验证,并向您传回一个oAuth2令牌,该令牌允许客户端验证他们是否被授权(登录)访问数据库。后端API身份验证实现非常多样化,这取决于您的数据库。(MongoDB、亚马逊、Firebase等)


否则,您可以使用
SharedReferences
来存储用户在经过身份验证后是否登录。我不建议使用此实现,因为它容易被利用,建议您使用上述API方法,并在用户每次进入您的应用程序时对其进行身份验证。身份验证并不意味着登录……它只是在服务器上检查他们的oAuth2令牌,以确保其有效。

存储密码不太安全。通常应用程序存储一些令牌(尽管它实际上取决于身份验证方法)。
除了Antonio的回答外,android还发布了加密密钥和值以提供更多安全性的功能。

请不要通过破坏您的帖子为其他人做更多工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果你想了解更多关于删除帖子的信息,请参阅:此帖子需要改进。实际上我想问的是另一件事@半身人