我最近開始調查Breezejs。 我正在研究一個系統,該系統將被多個客戶使用,我無法將一個客戶數據暴露給另一個客戶。 Breezejs如何確保實現這一點的標準/推薦方式是什麼?Breezejs限制訪問實體
說我的實體
客戶與性能的ID,姓名
與性能標識,電子郵件,客戶ID
註冊電子郵件我一直在客戶開會時,我穿上用戶登錄」 •允許我的用戶界面中的用戶發送客戶ID,但是如何阻止惡意用戶手工製作請求並訪問其他客戶信息?
我最近開始調查Breezejs。 我正在研究一個系統,該系統將被多個客戶使用,我無法將一個客戶數據暴露給另一個客戶。 Breezejs如何確保實現這一點的標準/推薦方式是什麼?Breezejs限制訪問實體
說我的實體
客戶與性能的ID,姓名
與性能標識,電子郵件,客戶ID
註冊電子郵件我一直在客戶開會時,我穿上用戶登錄」 •允許我的用戶界面中的用戶發送客戶ID,但是如何阻止惡意用戶手工製作請求並訪問其他客戶信息?
最簡單的方法是在服務器上返回帶有客戶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);
}
}
這是否有意義?
這當然是最簡單的,但是,它沒有辦法防止某人刪除/更新非常相同的限制條目,因爲在保存期間不會考慮此查詢。只有EntityType被髮送到SaveChanges。