我对处理保持用户登录应用程序的最佳方式有疑问。我想知道如何实现与Snapchat等应用程序类似的功能,即使在用户关闭/打开手机时也能保持用户登录状态。我是否认为他们在设备上本地存储授权密钥以达到此目的?我从来不想登录用户,除非他们点击“注销”按钮,但我没有使用授权密钥的经验,以保持人们登录。这种验证/登录用户的方法是否安全?
所以我想知道如果下面的方法将是一个很好的方法使用,或者如果它不安全/将采取什么更好的方法。 首先,我在我的数据库中有一个表格,内容如下: device_id,用户名,密码,logged_in。
我目前的方法:
- 当应用程序启动时,获取设备的唯一ID。
- 使用Javascript/php将ID发送到数据库。
- 使用SQL检查数据库中的ID。
- 如果ID不在数据库中,或者,如果与该ID相关联的“logged_in”列表示“0”(表示未登录),那么这意味着它是新设备/并且可能是新用户或用户当前从该设备注销(由于在前一个会话结束时按下“注销”按钮 - “注销”按钮将“logged_in”列更改为“0”)。
- 因此,该应用程序现在向用户提供输入登录详细信息(用户名&密码)的选项,或注册应用程序(创建用户名&密码)。
- 如果这些进程是成功的,数据库更新,并且用户可以使用的应用程序(以下简称“LOGGED_IN”一栏被改成“1” - 这意味着用户登录)。
- 每当用户打开应用程序,如果他们的ID在数据库中,并且关联的“logged_in”列=“1”,则不需要登录屏幕,他们已经登录并且可以立即访问应用程序。
- 如果某人在一台设备上登录其帐户,但获取了新设备并登录该设备(使用其用户名和密码),则其存储的设备ID将被其新设备ID覆盖。 - 这应该使它们显示在他们自己的设备上(因为他们的旧ID不会被发现,所以他们会被提示重新输入他们的用户名和密码,如果他们回到他们的旧手机)。
这是一个稳定和安全的方法来验证用户的详细信息,并保持人们登录到应用程序?他们仍然能够通过按下“注销”按钮注销他们,他们会将“logged_in”列从“1”更改为“0”。但是这种方法可能存在缺陷?我真的很感激任何建议,最好的方式来做到这一点。提前致谢!