2013-03-09 2 views
1

Недавно я начал исследовать Бризеи. Я работаю над системой, которая будет использоваться несколькими клиентами, и я не могу разоблачить данные одного клиента другому. Как Breezejs гарантирует, что или что является стандартным/рекомендуемым способом реализации этого.Breezejs, ограничивающий доступ к объектам

Say мои субъекты

клиентов с свойства Id, Name

Зарегистрированные сообщения электронной почты с свойства Id, электронная почта, CustomerId

Я держать CUSTOMERID в сессии, когда пользователь входит в систему, я не» t разрешить пользователю в моем пользовательском интерфейсе отправлять идентификатор клиента, но как я могу остановить злонамеренного пользователя от ручной обработки запроса и доступа к информации других клиентов?

ответ

1

Самый простой способ - вернуть 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

Это, безусловно, самый простой, но у него нет НИКАКИХ способов защитить от кого-то, кто удаляет/обновляет те же ограниченные записи, что и этот запрос не учитывается во время сохранения. В SaveChanges отправляется только EntityType.

Смежные вопросы