Безопасность на уровне строк - PullRequest
1 голос
/ 04 октября 2011

Как запретить пользователю обновлять только свою строку в базе данных.

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

Таким образом: SchoolId, OwnerID, Name, PhoneNumber

Я реализовал функцию, которая: CanEditSchool (SchoolID) Если пользователь не является владельцем конкретной школы, он выдает исключение.

Есть ли лучшее решение? Я использую linq2sql в качестве нормы.

Ответы [ 3 ]

1 голос
/ 04 октября 2011

В зависимости от того, как вы обрабатываете текст данных, вы можете использовать LoadOptions для текста данных.

http://msdn.microsoft.com/en-us/library/Bb386915(v=VS.90).aspx

0 голосов
/ 04 октября 2011

Ваше действие контроллера должно проверить вашу функцию безопасности, чтобы убедиться, что вошедший в систему пользователь может редактировать данный элемент.Если нет, вам следует отправить их на страницу / представление типа «отказано в разрешении».

Ваша функция CanEditSchool не должна вызывать исключение.Название предполагает, что он вернет bool;true, если они могут редактировать его, false, если нет.

0 голосов
/ 04 октября 2011

Одним из решений, которое не кажется оптимальным, было бы создание представления для пользователя, содержащего только школу под его юрисдикцией:

CREATE VIEW `v_jimmy` AS
    SELECT * FROM `schools`
    WHERE SchoolId = 5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...