Re: Безопасность вызова методов, на основе ролей из БД
От: HowardLovekraft  
Дата: 02.12.11 05:44
Оценка:
Здравствуйте, RW, Вы писали:

RW>Приложение должно загрузить и отобразить нужные контролы, дать возможность вызывать методы, в зависимости от того какой пользователь вошел


Результатом авторизации пользователя будет какой-то контекст, в котором будут хранится роли и разрешения текущего пользователя.

Для "отображения нужных контролов" нужно построить модель (представления) на основе контекста, применимую к конкретному представлению — т.е. какой-то класс вида:
public class OrderEditorSecurityViewModel
{
  property Boolean IsSaveCommandEnabled { /* ... */ }
  property Boolean IsCustomerSelectorEnabled {  /* ... */ }
  
  // ...
}

и затем связать экземпляр этого класса с нужными свойствами контролов. Конкретные детали реализации будут зависеть от GUI-фреймворка, которым вы воспользуетесь.

С "методами" сложнее.
Если у вас клиент-сервер, то управления доступностью/видимостью контролов будет достаточно — сделали кнопку disabled, и уже ее обработчик не сработает -> "метод" не выполнится.
Если у вас есть app server, то, по-хорошему, нужно обеспечить разграничение доступа на уровне вызова серверных методов, иначе любой клиент, написанный не вами, сможет делать все, что заблагорассудится. Т.е. в базе хранить разрешения на вызов методов, а при обращении к серверу передавать credentials пользователя, получать контекст с разрешениями и принимать решение — можно или нельзя.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.