首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据用户锁定特定节点的读写访问权限

根据用户锁定特定节点的读写访问权限
EN

Stack Overflow用户
提问于 2015-04-17 07:38:01
回答 1查看 204关注 0票数 0

我知道有类似的问题,但我仍然有点困惑如何确保我的防火墙正确。

首先,我使用EmberFire。其次,我使用Firebase电子邮件/密码身份验证来进行帐户管理。我的每个账户都代表着一家公司。我希望这样做,以便当前通过身份验证的业务只能访问他/她的数据。最初,我的想法是使用以下数据结构:

代码语言:javascript
复制
+ businesses
    - uid-1
    - uid-2
    - uid-3

...where uid是通过Firebase电子邮件/密码身份验证分配给用户的。然后,我将使用以下安全规则:

代码语言:javascript
复制
{
  "rules": {
    "businesses": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

尽管如此,有两个问题:

  1. 它能用吗?(非常肯定它将基于这个职位)
  2. 如果是这样的话,我如何才能让EmberFire允许我使用我自己的id,而不是push()生成的东西,根据文档,push()是由EmberFire在幕后使用的。

更新关于EmberFire,下面是我用来将模型保存到Firebase的代码:

代码语言:javascript
复制
var business = _this.store.createRecord('business', {
    uid: userData.uid,
    businessName: _this.get('businessName'),
    firstName: _this.get('firstName'),
    lastName: _this.get('lastName')
});

business.save().then(function(success) {
    flashMessages.success('Your account has been created! Please login below.');
    _this.transitionToRoute('login');
}, function(error) {
    flashMessages.warning(error);
});

我看到的是,这些创建的对象的根节点最终是Firebase生成的唯一时间戳ID。为了解决我的问题,我想将其覆盖到auth.uid。

提前感谢!詹姆斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-17 18:17:03

您可以在执行id时指定createRecordid将成为防火墙

代码语言:javascript
复制
var record = this.store.createRecord('business', {
  id: userData.uid,
  businessName: this.get('businessName'),
  firstName: this.get('firstName'),
  lastName: this.get('lastName')
});

在创建之前,您可能希望确保用户记录不存在,因此您需要一个“查找或创建”流。在Ember数据中做这样的流存在一些问题。注释这里中概述了一个示例解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29693106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档