我真的很喜欢在 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/