1

我最近开始研究 Breezejs。我正在开发一个将被多个客户使用的系统,我不能将一个客户的数据暴露给另一个客户。Breezejs 如何确保实现这一点的标准/推荐方式是什么?

说我的实体是

具有属性 ID、名称的客户

具有属性 Id、Email、CustomerId 的已注册电子邮件

当用户登录时,我将 CustomerId 保持在会话中,我不允许我的 UI 中的用户发送客户 ID,但是如何阻止恶意用户手工制作请求并访问其他客户信息?

4

2 回答 2

1

最简单的方法是在具有客户 ID 限制的服务器上返回您的 IQueryables。像这样的东西:

[BreezeController]
public class NorthwindIBModelController : ApiController {
    ...
  // initialize this from your session data  
  private var currentCustomerId;

  [HttpGet]
  public IQueryable<Customer> Customers() {
    return ContextProvider.Context.Customers.Where(cust => cust.Id == currentCustomerId);
  }

  [HttpGet]
  public IQueryable<Email> RegisteredEmails() {
    return ContextProvider.Context.Emails.Where(email => email.CustomerId == currentCustomerId);
  }
}

这有意义吗?

于 2013-03-10T05:22:57.563 回答
0

这当然是最简单的,但是,它无法防止有人删除/更新相同的受限条目,因为在保存过程中不考虑此查询。只有 EntityType 被发送到 SaveChanges。

于 2013-04-24T15:34:35.813 回答