我最近开始调查Breezejs。 我正在研究一个供多个客户使用的系统,我不能将一个客户数据暴露给另一个客户。 Breezejs如何确保实现此目标的标准/推荐方式。
说我的实体
拥有房产ID,名称
的客户已注册的电子邮件,其中包含属性ID,电子邮件,CustomerId
当用户登录时,我将CustomerId保持在会话中,我不允许用户在我的UI中发送客户ID但是如何阻止恶意用户手工制作请求并访问其他客户信息?
答案 0 :(得分:1)
最简单的方法是在服务器上返回具有客户ID限制的IQueryable。像这样:
[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);
}
}
这有意义吗?
答案 1 :(得分:0)
这当然是最简单的,但它没有办法防止有人删除/更新相同的限制条目,因为在保存期间不考虑此查询。只有EntityType被发送到SaveChanges。