首页 > 解决方案 > 即使应用程序关闭后使用异步存储保持用户登录应用程序

问题描述

即使在应用程序关闭后,我也试图在应用程序中保持用户已登录,这意味着用户将不再需要在每次打开应用程序时再次重新输入他/她的用户 ID 和密码。

我想使用 AsyncStorage(除了 redux)来实现这一点,我的问题是:是否可以使用 AsyncStorage 来做到这一点?我在网上找到了有关如何使用 Async 持久化数据的资源,但 U 无法将这些资源与我想做的事情联系起来。

标签: javascriptreact-native

解决方案


你应该这样做:

  1. 用户打开应用程序,可能会在您的启动画面中执行此操作,didMount我更喜欢仅在启动画面中先完成此类事情。检查 AsyncStorage 中的一个标志,isLoggedIn如果这是真的,从 AsyncStorage 获取用户凭据并将它们提供给您的登录请求,然后应用程序流程的其余部分继续。
  2. 如果isLoggedIn为 false(或 null),则向用户显示登录屏幕,成功登录后,将凭据保存到 AsyncStorage,成功后必须将isLoggedIn标志保存到true应用程序流程的其余部分。

对于第 1 点,代码应如下所示:

AsyncStorage.getItem('isLoggedIn').then((value) => {
  if(value && value === 'YES') {
    //hit login api using the saved credentials and take user inside the application. 
  } else {
     //Take user to login page and progress with point 2.
  }
});

以下是登录成功后应适用于第 2 点的代码。

    const encrypted_username = myFancyEncrptionFunction(username);
    const encrypted_password = myFancyEncrptionFunction(username);
    AsyncStorage.setItem('username', encrypted_username).then(()=>{
      AsyncStorage.setItem('password', encrypted_username).then(()=>{
         AsyncStorage.setItem('isLoggedIn', 'YES');
      });
    });

它完全取决于您希望您的用户凭据如何保存在 AsyncStorage 中,即加密或不加密。但它总是建议对这些东西进行加密。


推荐阅读