我使用的是account-ui包,效果很好。我需要为每个用户帐户存储其他信息。比如他们的CustomerID,所以我可以让多个用户与同一个客户相关联。或者也许isAdmin标记他们是该客户的管理员用户还是普通用户。
如果有一种简单的方法可以方便客户拥有多个用户帐户而且我还没有看到它,请告知我们。
根据Accounts,Meteor.users下的文档,最适用的字段将是个人资料,但它也会说明以下内容:
profile:用户可以创建和更新的对象(默认情况下) 任何数据。
虽然这是存储姓氏等名称的好地方,但我显然不希望用户能够修改/更新CustomerID或isAdmin,所以我不确定这是否是最好的用于存储此类数据的位置。或许它是,我应该使用拒绝规则,以便不适当的用户无法修改此数据。
我应该将CustomerID存储在此处还是存储在单独的Customer集合中。或者,如果我认为这完全错了,我会很高兴被指向正确的方向。我注意到了Roles包,但这似乎主要是扩展帐户包,也不是基于每个客户存储帐户和角色。还考虑建立我自己的身份验证系统而不是使用accounts-ui,这当然是一种选择。
答案 0 :(得分:3)
很明显,你做完了你的功课。以下是一些建议:
如果您只有一种角色类型,则角色包可能过度。
使用配置文件存储角色数据是安全的,仅当您为更新添加拒绝规则时(见下文)正如文档指出的那样,默认情况下用户配置文件是可编辑的即使那时insecure
包已被删除。我一直在游说核心开发者改变这一点 - 到目前为止无济于事。
我对您的数据知之甚少,无法建议如何建立客户关系模型。您可以按照建议在配置文件中放置一个ID,或者您可以在客户对象上放置一组用户ID(您可以为客户执行类似于管理员的概念)。它主要取决于如何更新/查询/发布这些文件等。通常,我更喜欢在配置文件中仅存储特定于用户的数据(名称,首选项等),并将关系保留在其他集合中。
一般情况下,我建议您编写自己的登录界面。这真的不是那么难,在很多情况下,它可能是对未来灵活性的良好投资。
Meteor.users.deny({
update: function() {
return true;
}
});