2013-03-09 133 views
1

我最近開始調查Breezejs。 我正在研究一個系統,該系統將被多個客戶使用,我無法將一個客戶數據暴露給另一個客戶。 Breezejs如何確保實現這一點的標準/推薦方式是什麼?Breezejs限制訪問實體

說我的實體

客戶與性能的ID,姓名

與性能標識,電子郵件,客戶ID

註冊電子郵件

我一直在客戶開會時,我穿上用戶登錄」 •允許我的用戶界面中的用戶發送客戶ID,但是如何阻止惡意用戶手工製作請求並訪問其他客戶信息?

回答

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); 
    } 
} 

這是否有意義?

0

這當然是最簡單的,但是,它沒有辦法防止某人刪除/更新非常相同的限制條目,因爲在保存期間不會考慮此查詢。只有EntityType被髮送到SaveChanges。