我已经实现了一个APP,应该允许一个设备一个账户,我将把uniqueId传递给Web API,与用户账户一起保存在SQL数据库中。这个验证发生在Splash和验证屏幕上。流程如下。
逻辑流程
设备 1:
- Splash屏幕:从AsyncStorage中获取值。如果没有,则进入认证。如果有值,则进入#3
- 填写用户名和密码,然后点击登录。
- APP将通过Web API与用户名、加密密码和从DeviceInfo模块获取的uniqueId一起获取。
- 如果SQL中的uniqueId列为空,更新该列。如果有值,则与uniqueId param比较。条件:MATCH-返回OK,MATCH-返回NOT。MATCH--返回OK,NOT MATCH--返回多次登录提示为异常。
- 获取承诺解析OK:-将加密的userId和userName保存到AsyncStorage中,然后进入Dashboard。
- Fetch promise reject:- 显示警告并停留在当前屏幕。
- 通知Web API清除uniqueId列,当用户点击登出按钮时,AsyncStorage将清除token值。
设备2:
- 直接按照1号装置进行
状况。
用户只注册一个设备或一个账号,因此,如果用户有两个设备,就必须注销设备1,并在设备2上登录,以防止 "多设备登录 "的提醒。因此,如果用户有两台设备,必须先注销设备1,再登录设备2,以防止出现 "多设备登录 "的提示。
问题:由于用户报告设备2丢失或被盗,用户必须注销设备1,并在设备2上登录,以防止出现 "多设备登录 "的提示。
由于用户报告设备2丢失或被盗。我们的管理系统会清除报失登录信息的uniqueId列。但实际情况是(安卓版,ios版还不熟悉),如果用户没有注销并按下HOME键,伪造了报失信息,APP会停留在任务管理器,使用设备1登录。所以最后,两个设备可以使用一个账号。
尋求最佳的解決方案,以解決所面臨的PROBLEM。
大多数的教程或例子都显示了我现在所做的验证,但还没有找到我的问题的情况。
我需要传递uniqueId每次APP将从Web API获取的数据时,我会查询Web API的验证?
我认为你不需要。授权后,你有一个独特的令牌来识别用户。
使用Headless JS来检查Web API,并通知UI多个设备警报并自动注销当前设备,是否可行?
是的,用socket,但不能长时间轮询api,但不推荐。
有其他更好的想法吗?
认证。
授权。