Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разрешить доступ только к части записей 
V
    Опции темы
Kostt
Дата 2.3.2006, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: нет
Всего: 3



Здравствуйте!
Существует база, состоящая из таблицы «Пользователи» (Поля: Имя в форме “Domain name\UserName” и Ф.И.О.), таблицы («Проекты») и таблиц данных, «завязанных» на таблицу «Проект» т.е. их записи образуют непересекающиеся множества, по одному на каждый проект. «Пользователи» связаны с «Проектами» таблицей «Доступ»: (ID проекта,
ID пользователя, Уровень доступа( 0 – нет доступа, 1- чтение, 2-чтение и запись)).
Задача – сделать так, чтобы пользователь мог работать только с теми записями, которые принадлежат проектам, для которых у него установлен доступ.
Для чтения решение нашел: можно создать view, в которые выбирать данные по такому принципу:
Код


CREATE VIEW dbo.ProjectsView_R
AS
SELECT *
FROM Проекты
WHERE (ID IN
(SELECT ProjectID FROM Доступ
WHERE UserID IN
(SELECT ID FROM Пользователи
WHERE SysName = CONVERT(nvarchar(100), SYSTEM_USER)) AND Уровень доступа = 2)). 

Функция SYSTEM_USER возвращает имя пользователя сессии в форме DomainName\UserName

Но эти view невозможно использовать для записи в таблицы . Предлагайте свои решения, плиз.


PM MAIL   Вверх
boevik
Дата 2.3.2006, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Самое простое решение, для просмотра это view.
А для записи в таблице, рациональнее использовать Stored Procedure.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Kostt
Дата 2.3.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: нет
Всего: 3



Собственно, написал SP для проверки она действительно позволяет модифицировать таблицу даже если у пользователя нет прав на таблицу. Но ведь эту SP может вызвать кто угодно с любыми параметрами! Получается дыра в защите...
Пытался написать SP для модификации своего VIEW - например добавление - проблема с ID... smile
PM MAIL   Вверх
boevik
Дата 2.3.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Но ты ведь знаешь кто вызвал процедуру и какие действия он может выполнять.
При этом как ты заметил, у него нет прямого доступа к таблице поэтому нет дырки.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
beroal
Дата 2.3.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 18.1.2003
Где: Украина

Репутация: нет
Всего: 3



Если это MS SQL Server, то твой view должен быть updatable. Т.е. его можно update-ить.
PM WWW   Вверх
Vit
Дата 2.3.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Цитата(beroal @ 2.3.2006, 08:58 Найти цитируемый пост)
Если это MS SQL Server, то твой view должен быть updatable. Т.е. его можно update-ить



Не обязательно, View может быть и не редактируемым, например если имеет Union или аггрегативные функции (а иногда и Join), но это обходится при помощи "Instead of" триггеров


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
leniviy
Дата 5.3.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



по-моему похожая тема уже была http://forum.vingrad.ru/index.php?showtopic=59138&hl=#
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0704 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.