ios - 如何允许用户在 iOS 中一次仅在一台设备上使用该应用程序?
问题描述
我一直在谷歌上搜索是否可以限制用户一次从一台设备登录的答案。
假设有一个移动应用程序(iOS 应用程序)允许一个用户一次从一台设备登录。如何实现?
要解决这个问题,我认为首先要识别一个设备。也许是通过它的 Mac 地址,但我没有找到任何方法从应用程序发出的用户请求中获取设备的 Mac 地址,因为任何直接标识 iOS 设备的标识符都被 Apple 隐私政策严格禁止。
所以为此我正在尝试做以下事情:
- 步骤 1)首次登录: API 参数 (用户名, 密码, uuid) ,,
- 步骤 2) uuid - 首次登录时为空,API 将允许登录,该用户的 uuid 为空。IMP,但仅当服务器上没有该用户的 uuid 时。
- 步骤 3)成功登录后,点击另一个 API,该 API 具有该用户的参数 uuid。还将 uuid 存储在钥匙串中,以便下次登录时您将拥有 uuid 值。--
- 第 4 步)如果用户想在其他设备上登录,那么对于第一次尝试,他/她将发送空 uuid,但服务器将不允许通过其空 uuid 登录,因为它具有该用户的 uuid 值。所以你可以通知管理员这种情况。——</li>
为了创建自定义 UUID,我使用以下代码:
let uuid = NSUUID().UUIDString.lowercaseString
print(uuid)
我正在将此 UUID 保存到我的钥匙串中。
因此,在考虑应用上述步骤时,我遇到了一个非常严重的问题
- 我是否遵循正确的方法?
- 如果是,例如,如果用户 A 登录应用程序然后注销,下一个用户 B 登录,那么它将向服务器发送相同的 UUID 吗?
- 如果用户 A 登录应用程序然后在未注销的情况下将其卸载并且用户 B 通过重新安装登录应用程序会发生什么情况。
以上场景如何管理UUID?如果有人能就可能的解决方案分享一些想法,那将非常有帮助。谢谢!
解决方案
您必须使用令牌方法,如果出现任何新登录,则必须从后端管理它,以前的令牌应该过期,并且在应用程序中,只要令牌过期,它就应该移动到登录屏幕,并为此目的使用UDID这是完全非法的,或者当您将其提交到应用商店时,您的应用可能会被拒绝,谢谢。
推荐阅读
- flutter - Flutter 加扰和翻译列表
- powershell - 您能否为 PowerShell 脚本中的常用参数提供额外帮助?
- java - 如何在 Netty 的 mina 中重现 IoSession
- javascript - 使用 get 方法的表单不起作用(url 和 jquery)
- python - 如何将 for 循环中的数组添加在一起?
- javascript - 尝试使用 ajax、LARAVEL 发布图像时出现错误 413(请求实体太大)
- c# - 如何使用正确的可见性修饰符来实现此类结构?
- c - 挣扎于 strcpy 和哈希表
- assembly - 为什么循环展开会在 ARM Cortex-a53 上带来如此多的加速?
- java - java - 如何在java中将列表(或数组)中未知数量的变量动态插入方法参数?