использование представлений для проверки неверного логина или неопознанного пользователя - PullRequest
0 голосов
/ 10 марта 2011

Я прочитал это на MSDN:

Представления позволяют различным пользователям просматривать данные по-разному, даже если они используют один и тот же данные одновременно. Это особенно полезно, когда пользователи, которые имеют много разных интересов и уровней квалификации, используют одну и ту же базу данных.

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

Мой вопрос:

Для приведенного выше примера у меня должен быть столбец с именем Userid / LoginId в моей таблице, для которого создается представление, чтобы я мог применить опцию проверки в представлении для этого столбца. и затем, если пользователь с именем, не указанным в этом столбце, пытается ввести данные, он / она блокируется.

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Да, вы правы. Вы должны

  • добавить столбец с именем пользователя или именем пользователя базы данных (скажем, вы называете его именем пользователя),
  • в каждой строке должно быть имя пользователя, заполненное логином или именем базы данных человека, которому разрешено просматривать эту строку
  • затем вы можете построить представление, в котором вы используете встроенные функции SUSER_SNAME() (для имен входа) или USER_NAME (для имен баз данных) в предложении WHERE для фильтрации только тех строк, которые пользователь может видеть

См. Предоставление разрешений на уровне строк в SQL Server (ADO.NET) .

0 голосов
/ 10 марта 2011

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

Существует практическое правило разработкив котором указано, что таблица должна моделировать сущность или отношение, но не то и другое одновременно.Предположим, что рассматриваемая таблица моделирует компании, которыми владеет клиент (то есть таблица сущностей), и бизнес-правило гласит, что менеджер по работе с клиентами может видеть только компании, относящиеся к клиентам, за которыми он следит.

Является ли account manager атрибутом company?Нет, поэтому account_manager не должен быть столбцом (атрибутом) в таблице Companies.

Есть ли прямая связь между account_manager и company?Нет, поэтому таблица отношений между ними здесь не обязательна (поскольку связь является косвенной).

Скорее, прямые отношения находятся между account manager и customer и между customer и company соответственно,Должно быть две таблицы, единственной целью которых является моделирование этих отношений.

...