javascript - 如何在 meteor 中制作一个电话应用程序,它可以为每个人存储不同的数据,但从不要求用户登录?

标签 javascript cordova meteor

我真的很喜欢在 Meteor 中编写 IOS/Android 应用程序的想法 - 但我不确定如何通过安全模型实现我想要的目标。我想做的每个应用程序都有相同的要求。

我想要的 - 应用程序的每个用户都隐式登录(即从来没有登录屏幕),并且有一个特定于他们的数据存储。即 - 用户 b 的数据完全不可能发送给用户 a - 即使他们检查了数据包,它也不会存在 - 但如果同一用户在 iphone 上打开应用程序,然后在 ipad 上打开应用程序,那么数据将同步。

本质上,用户由一些环境事物来表示 - 例如当前的 Apple ID - 并且几乎拥有自己独立的数据库,只有他们可以访问 - 具有真正的安全性。

这在 meteor 中可能并且容易吗?

最佳答案

绝对有可能,而且很简单,是的。诀窍是在客户端上生成一个随机 ID,并将其存储在浏览器/ WebView 中。我还没有在移动设备上测试过这个,但是根据MDN Android/iOS 上的 Web View 组件支持 localStorage

服务器:

Meteor.publish('user-data', (id) => {
  UserData.find({user: id});
});

客户:

let id = localStorage.getItem('id');
if (!id) {
  // generate a random ID
  const array = new Uint32Array(1);
  window.crypto.getRandomValues(array);
  id = array[0];
  localStorage.setItem('id', id);
}
Meteor.subscribe('user-data', id);

PS:我意识到这并不能解决“如果同一用户在 iPhone 上打开应用程序,然后在 iPad 上打开应用程序,则数据将同步”。为此,您必须将您使用的 ID 替换为可以从设备本身检索的内容。可能有 cordova 插件。对于 Android,this one看起来很有希望。

关于javascript - 如何在 meteor 中制作一个电话应用程序,它可以为每个人存储不同的数据,但从不要求用户登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59525894/

相关文章:

templates - 创建可重用组件的模式

javascript - 在浏览器或 native 应用程序中正确打开 facebook 页面链接 IOS cordova

java - 第二次插件调用后收到 Cordova 插件回调

Cordova 混合应用程序

node.js - Meteor 作为 npm 模块的依赖项?错误: Cannot find module 'meteor/mongo'

javascript - Meteor Collection.find() 除值之外的所有内容

javascript - 将参数从网页传递给 CSS 类

javascript - 在以下情况下,如何在主菜单悬停时显示子菜单项?

javascript - 如何使用以 "a"开头或以 "b"结尾的 CSS 选择器对元素进行模式匹配

javascript - 基于 JavaScript 的跨平台移动应用程序分析