Android 保存用户凭据
我正在创建一个应用程序,它使用需要电子邮件和密码身份验证的API检索数据 我目前正在将数据以纯文本形式保存到SharedReferencesAndroid 保存用户凭据,android,authentication,credentials,Android,Authentication,Credentials,我正在创建一个应用程序,它使用需要电子邮件和密码身份验证的API检索数据 我目前正在将数据以纯文本形式保存到SharedReferences 在我看来,这并不是一个完全安全和高质量的解决方案 当我在互联网和StackOverflow上搜索时,每个人都提供SharedReferences作为解决方案 我可以征求你的意见吗?或者问你有什么建议?如何创建一个高质量的登录系统 其他信息: 用户可以选择在下次打开应用程序时保持登录状态。如果他选择不这样做,我仍然必须保留用户凭据,直到应用程序关闭(由于应用
提前感谢您的想法和意见。问题 不建议在移动应用程序中存储普通用户名/密码,因为这样不安全 解决方案 使用,其工作流如下所示:
- 客户端向服务器发送用户名/密码
- 服务器检查用户名/密码是否有效,然后生成令牌并将令牌发送给客户端
- 客户端将此令牌保存到本地存储,如文件、SharePreference、数据库等。。并从现在起使用此令牌调用API
- 不需要存储普通用户名/密码
- 如果用户注销并退出应用程序,则可以存储普通用户名。下次他们打开应用程序时,我们可以在登录屏幕上显示用户名(更好的用户体验),他们只需输入密码
- 退出应用程序并显示登录屏幕,用户需要输入密码才能获得新令牌
- 用于获取新令牌
- 当用户选择“下次登录时请勿停留”选项时,应将其保存到本地存储中
- 每次用户打开应用程序时,如果此选项为真,则清除令牌,显示登录屏幕
- 如果此选项为false且令牌未过期,请转到主屏幕,否则获取新令牌
查看更多信息。这看起来是正确的解决方案,但遗憾的是,我没有机会将API服务器更改为令牌身份验证。我必须尊重此设置,并使用电子邮件和密码调用每个API请求。除其他外,每个API调用都包含一个SHA-1密码。这意味着它应该足以在SHA-1中存储电子邮件和加密密码。那么,我应该在哪里安全地存储这些值呢?@KarelKrýda plz请查看我更新的answeer。现在它看起来更好了。我有一个加密的SharedReferences文件,上面有姓名、电子邮件和密码,然后是一个SharedReferences文件,上面有暗/光模式、语言、记住我等。谢谢:)@KarelKrýda听到这个消息很高兴。顺便说一句,如果这个答案有用的话,你可以投赞成票或者把它作为一个答案,这将有助于我将来改进我的答案。