如何在react-native中允许一个设备登录?

问题描述 投票:0回答:1

我已经实现了一个APP,应该允许一个设备一个账户,我将把uniqueId传递给Web API,与用户账户一起保存在SQL数据库中。这个验证发生在Splash和验证屏幕上。流程如下。

逻辑流程

设备 1:

  1. Splash屏幕:从AsyncStorage中获取值。如果没有,则进入认证。如果有值,则进入#3
  2. 填写用户名和密码,然后点击登录。
  3. APP将通过Web API与用户名、加密密码和从DeviceInfo模块获取的uniqueId一起获取。
  4. 如果SQL中的uniqueId列为空,更新该列。如果有值,则与uniqueId param比较。条件:MATCH-返回OK,MATCH-返回NOT。MATCH--返回OK,NOT MATCH--返回多次登录提示为异常。
  5. 获取承诺解析OK:-将加密的userId和userName保存到AsyncStorage中,然后进入Dashboard。
  6. Fetch promise reject:- 显示警告并停留在当前屏幕。
  7. 通知Web API清除uniqueId列,当用户点击登出按钮时,AsyncStorage将清除token值。

设备2:

  1. 直接按照1号装置进行

状况。

用户只注册一个设备或一个账号,因此,如果用户有两个设备,就必须注销设备1,并在设备2上登录,以防止 "多设备登录 "的提醒。因此,如果用户有两台设备,必须先注销设备1,再登录设备2,以防止出现 "多设备登录 "的提示。

问题:由于用户报告设备2丢失或被盗,用户必须注销设备1,并在设备2上登录,以防止出现 "多设备登录 "的提示。

由于用户报告设备2丢失或被盗。我们的管理系统会清除报失登录信息的uniqueId列。但实际情况是(安卓版,ios版还不熟悉),如果用户没有注销并按下HOME键,伪造了报失信息,APP会停留在任务管理器,使用设备1登录。所以最后,两个设备可以使用一个账号。

尋求最佳的解決方案,以解決所面臨的PROBLEM。

  1. 当我向Web API查询数据时,是否需要每次APP从Web API获取数据时,都要传递uniqueId来验证?
  2. 使用Headless JS来检查Web API,并通知UI多个设备警报并自动注销当前设备是否实用?
  3. 有其他更好的想法吗?

大多数的教程或例子都显示了我现在所做的验证,但还没有找到我的问题的情况。

android ios react-native react-native-android react-native-ios
1个回答
0
投票

我需要传递uniqueId每次APP将从Web API获取的数据时,我会查询Web API的验证?

我认为你不需要。授权后,你有一个独特的令牌来识别用户。

使用Headless JS来检查Web API,并通知UI多个设备警报并自动注销当前设备,是否可行?

是的,用socket,但不能长时间轮询api,但不推荐。

有其他更好的想法吗?

认证。

  • 用户登录并获得一个token(类似的东西)。
  • 服务器端存储用户的最新令牌。

授权。

  • 当用户调用API时,检查token是否为最新的token(你的逻辑)。
  • 如果不是http状态码401,则拒绝该请求(你说了算。
  • 旧设备在收到401时显示 "多设备登录 "的提示。
© www.soinside.com 2019 - 2024. All rights reserved.