Warm tip: This article is reproduced from serverfault.com, please click

android-保存用户凭证

(android - Saving user credentials)

发布于 2020-12-02 19:11:51

我创建一个应用程序检索使用的数据API,需要电子邮件地址和密码认证。

我目前正在将数据以纯文本格式保存到SharedPreferences。

  1. 在我看来,这并不是一个完全安全和高质量的解决方案
  2. 当我在Internet上和StackOverflow上搜索时,每个人都提供了SharedPreferences作为解决方案

我可以征求你的意见或提出什么建议吗?如何创建优质的登录系统?

附加信息:

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

(Java中的Android应用程序)

预先感谢你的想法和意见。

Questioner
Karel Krýda
Viewed
11
Son Truong 2020-12-03 16:33:02

问题

不建议在移动应用中存储纯用户名/密码,因为它不安全。

解决方案

使用基于令牌的身份验证,其工作流程如下:

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

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

  • 客户端将此令牌保存到本地存储,例如File,SharePreference,Database等。并从现在开始使用此令牌来调用API。

益处

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

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

令牌通常有时间过期,这意味着令牌可以生存多长时间。当令牌过期时,你有两种解决方案:

  • 注销该应用程序并显示“登录”屏幕,用户需要输入密码才能获取新令牌

  • 使用刷新令牌获取新令牌

回到你的关注

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

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

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

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

更新

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

在此处查看更多信息