保存用户凭据

Saving user credentials

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

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

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

能征求一下您的意见吗,或者问一下您有什么建议?如何打造优质的登录系统?

附加信息:

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

(Android 申请 Java)

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

问题

不建议在移动应用程序中存储普通 username/password,因为它不安全。

解决方案

使用Token-Based Authentication,其工作流程如下:

  • 客户端发送username/password到服务器

  • 服务器检查username/password是否有效,然后生成token发送给客户端

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

好处

  • 不需要存储plain username/password

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

Token 通常有时间过期,意思是它能活多久。当令牌过期时,您有 2 个解决方案:

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

  • 使用refresh token获取新令牌

回复您的关注

The user has the choice of staying logged in the next time the application is turned on. If he chooses not, I still have to keep the user credentials until the application closes (due to API queries while the application is running).

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

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

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

更新

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

查看更多信息here