2013-03-02 1 views
0

У меня есть приложение, которое использует библиотеку для репозитория для выполнения всех операций с базой данных. В этой библиотеке много методов, и у некоторых пользователей есть права на выполнение всех операций, кроме других.структура сущности, WCF и разрешения пользователя: как реализовать его

У меня есть клиентское приложение, которое, если оно установлено на компьютере внутри локальной сети, этот клиент напрямую использует репозиторий для подключения к базе данных. Таким образом, по соображениям производительности клиент не должен проходить через хост WCF.

Если приложение установлено на компьютере вне локальной сети, он подключается через службу WCF и затем использует репозиторий для подключения к базе данных.

Мой вопрос: Как проверить, имеет ли пользователь разрешение на использование метода репозитория.

Я думаю о двух вариантах. Один из них - когда я создаю объект в репозитории, он создается, когда я запускаю приложение и уничтожаю его при закрытии приложения. Когда я создаю репозиторий, я получаю всю конфигурацию разрешений для всех пользователей, поэтому я выполняю только один запрос в базе данных. Однако, если приложение очень большое или у меня много пользователей, это может потреблять много памяти, что не очень хорошо.

Другой вариант - для каждого метода в репозитории передать два дополнительных аргумента - пользователя и пароль, поэтому первое, что делает каждый метод, это запрос к базе данных для разрешения. Это потребляет меньше памяти, но делает больше запросов к базе данных. Запрос очень прост, но он потребляет ресурсы (соединения).

Так что я хотел бы знать, есть ли больше возможностей для контроля разрешений или мой первый вариант является хорошим решением.

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Спасибо, в моих будущих вопросах я буду следовать этим рекомендациям. –

ответ

1

Мой совет - это пароль или уникальный ключ доступа, который является вторым выбором, например, с помощью GUID или чего-то еще. Вам понадобится отдельный объект сохранения, обслуживающий несколько запросов. Создание и уничтожение в каждом соединении кажется бесполезным. Один объект, множественное соединение, несколько ключей для нескольких проектов. Следите за всеми ключами для объектов. Это дает и берет с точки зрения ресурсов.

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