javascript - 即使应用程序关闭后使用异步存储保持用户登录应用程序
问题描述
即使在应用程序关闭后,我也试图在应用程序中保持用户已登录,这意味着用户将不再需要在每次打开应用程序时再次重新输入他/她的用户 ID 和密码。
我想使用 AsyncStorage(除了 redux)来实现这一点,我的问题是:是否可以使用 AsyncStorage 来做到这一点?我在网上找到了有关如何使用 Async 持久化数据的资源,但 U 无法将这些资源与我想做的事情联系起来。
解决方案
你应该这样做:
- 用户打开应用程序,可能会在您的启动画面中执行此操作,
didMount
我更喜欢仅在启动画面中先完成此类事情。检查 AsyncStorage 中的一个标志,isLoggedIn
如果这是真的,从 AsyncStorage 获取用户凭据并将它们提供给您的登录请求,然后应用程序流程的其余部分继续。 - 如果
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 中,即加密或不加密。但它总是建议对这些东西进行加密。
推荐阅读
- python - 将多个训练数据 npy 文件附加到一个 npy 文件
- jquery - 如何在 jQuery Datables.net 中捕获箭头键
- imap - imap 是否支持多个连接?
- c# - 将此消息发送到您的机器人时出错:HTTP 状态代码已禁止。Azure 门户
- c# - Restsharp AddJsonBody 的最佳使用方式是什么?对象或正文字符串?
- java - 如何知道两个类是否实现了一个公共接口?
- excel - 是否有一个 Excel 公式可以以固定的行间隔填充具有特定数字的单元格?
- android - 构建apk时如何打破文件数[64K]限制?
- node.js - 如何在路由中传递模式模型
- solr - SOLR 同义词不适用于某些关键字