如何在 meteor 中制作一个手机应用程序,它存储每个人的不同数据,但从不要求用户登录?



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

我想要的 - 应用程序的每个用户都隐式登录(即永远没有登录屏幕(,并且有一个特定于他们的数据存储。 即 - 用户 B 的数据完全不可能发送给用户 A - 即使他们检查了数据包,它也不会在那里 - 但是如果同一用户例如在 iPhone 上打开应用程序,然后在 iPad 上打开,该数据将被同步。

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

这在流星中可能和容易吗?

绝对有可能,而且很容易是的。诀窍是在客户端上生成一个存储在其浏览器/Web 视图中的随机 ID。我还没有在移动设备上测试过这个,但根据MDN的说法,Android/iOS上的网络视图组件支持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替换为可以从设备本身检索的内容。可能有科尔多瓦插件。对于Android来说,这个似乎很有希望。

最新更新