Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 保存用户凭据_Android_Authentication_Credentials - Fatal编程技术网

Android 保存用户凭据

Android 保存用户凭据,android,authentication,credentials,Android,Authentication,Credentials,我正在创建一个应用程序,它使用需要电子邮件和密码身份验证的API检索数据 我目前正在将数据以纯文本形式保存到SharedReferences 在我看来,这并不是一个完全安全和高质量的解决方案 当我在互联网和StackOverflow上搜索时,每个人都提供SharedReferences作为解决方案 我可以征求你的意见吗?或者问你有什么建议?如何创建一个高质量的登录系统 其他信息: 用户可以选择在下次打开应用程序时保持登录状态。如果他选择不这样做,我仍然必须保留用户凭据,直到应用程序关闭(由于应用

我正在创建一个应用程序,它使用需要电子邮件和密码身份验证的API检索数据

我目前正在将数据以纯文本形式保存到SharedReferences

  • 在我看来,这并不是一个完全安全和高质量的解决方案
  • 当我在互联网和StackOverflow上搜索时,每个人都提供SharedReferences作为解决方案
  • 我可以征求你的意见吗?或者问你有什么建议?如何创建一个高质量的登录系统

    其他信息:

    用户可以选择在下次打开应用程序时保持登录状态。如果他选择不这样做,我仍然必须保留用户凭据,直到应用程序关闭(由于应用程序运行时的API查询)

    (Java中的Android应用程序)


    提前感谢您的想法和意见。

    问题

    不建议在移动应用程序中存储普通用户名/密码,因为这样不安全

    解决方案

    使用,其工作流如下所示:

    • 客户端向服务器发送用户名/密码

    • 服务器检查用户名/密码是否有效,然后生成令牌并将令牌发送给客户端

    • 客户端将此令牌保存到本地存储,如文件、SharePreference、数据库等。。并从现在起使用此令牌调用API

    效益

    • 不需要存储普通用户名/密码

    • 如果用户注销并退出应用程序,则可以存储普通用户名。下次他们打开应用程序时,我们可以在登录屏幕上显示用户名(更好的用户体验),他们只需输入密码

    代币通常已经过期,这意味着它能活多久。当令牌过期时,您有两种解决方案:

    • 退出应用程序并显示登录屏幕,用户需要输入密码才能获得新令牌

    • 用于获取新令牌

    回到你的问题上来

    用户可以选择在下次打开应用程序时保持登录状态。如果他选择不这样做,我仍然必须保留用户凭据,直到应用程序关闭(由于应用程序运行时的API查询)

    • 当用户选择“下次登录时请勿停留”选项时,应将其保存到本地存储中

    • 每次用户打开应用程序时,如果此选项为真,则清除令牌,显示登录屏幕

    • 如果此选项为false且令牌未过期,请转到主屏幕,否则获取新令牌

    更新

    如果无法更改系统的身份验证机制,则应选择以下选项之一:


    查看更多信息。

    这看起来是正确的解决方案,但遗憾的是,我没有机会将API服务器更改为令牌身份验证。我必须尊重此设置,并使用电子邮件和密码调用每个API请求。除其他外,每个API调用都包含一个SHA-1密码。这意味着它应该足以在SHA-1中存储电子邮件和加密密码。那么,我应该在哪里安全地存储这些值呢?@KarelKrýda plz请查看我更新的answeer。现在它看起来更好了。我有一个加密的SharedReferences文件,上面有姓名、电子邮件和密码,然后是一个SharedReferences文件,上面有暗/光模式、语言、记住我等。谢谢:)@KarelKrýda听到这个消息很高兴。顺便说一句,如果这个答案有用的话,你可以投赞成票或者把它作为一个答案,这将有助于我将来改进我的答案。