Android:存储用户名和密码?

如果我想存储在Android应用程序中使用的用户名和密码,最好的方法是什么? 它是通过首选项屏幕(但如果用户错过了这个?),或者弹出一个对话框并询问用户的凭据? 如果是这样,我必须保持应用程序的状态。 我将如何做到这一点?


我见过的大多数Android和iPhone应用都使用初始屏幕或对话框来索取凭证。 我认为用户必须经常重新输入他们的名字/密码很麻烦,所以从可用性的角度来看,存储这些信息是有意义的。

(Android开发指南)的建议是:

一般来说,我们建议最大限度地减少询问用户凭据的频率 - 使网络钓鱼攻击更加显眼,并且不太可能成功。 而是使用授权令牌并刷新它。

在可能的情况下,用户名和密码不应该存储在设备上。 而应使用用户提供的用户名和密码执行初始身份验证,然后使用短期的特定于服务的授权令牌。

使用AccountManger是存储凭证的最佳选择。 SampleSyncAdapter提供了一个如何使用它的例子。

如果出于某种原因,这不是您的选择,您可以使用首选项机制退回到持久性凭据。 其他应用程序将无法访问您的首选项,因此用户的信息不容易暴露。


您应该使用Android AccountManager。 它是专门为此场景构建的。 这有点麻烦,但是它所做的一件事情是,如果SIM卡改变,则本地凭证无效,所以如果有人刷你的手机并在其中投入新的SIM卡,你的凭证将不会受到损害。

这也为用户提供了一种快捷方便的方法,可以从一个地方访问(并可能删除)其存储在设备上的任何帐户的凭证。

SampleSyncAdapter(如提到的@Miguel)是一个使用存储帐户凭证的示例。


我认为保护您的凭证的最佳方法是首先考虑将密码与加密一起存储在account.db文件中,这在无根设备中很难使用,并且在根设备的情况下,黑客必须需要密钥才能解密它。

其他选项就是像Gmail一样进行所有认证。 在与Gmail服务器的第一次认证之后。 你得到了用于密码的Auth令牌。 该标记将以纯文本形式存储。如果您从服务器更改密码,此标记可能为false。

我建议您启用双因素身份验证并为您的设备创建设备特定密码。 丢失设备后,您只需要禁用该设备。

链接地址: http://www.djcxy.com/p/36777.html

上一篇: Android: Storing username and password?

下一篇: What is the most appropriate way to store user settings in Android application