2009-12-09 3 views
1

Использование Shiro у нас есть отличная инфраструктура безопасности, встроенная в наше корпоративное приложение, работающее на GF. Вы определяете пользователей, роли, разрешения, и мы можем управлять на любом мелкозернистом уровне, если пользователь может получить доступ к приложению, определенной странице или даже щелкнуть по определенной кнопке.Реализация безопасности данных

Есть ли рецепт или шаблон, который позволяет, помимо всего прочего, запретить пользователю просматривать определенные данные?

Образец: У вас есть стол для клиентов на 3 завода (часть одной компании). Пользователь администратора может видеть все записи клиентов, но пользователь на местном заводе не должен видеть какие-либо данные о клиентах на других заводах (по какой-либо причине).

Функция безопасности должна быть частью определения роли.

Спасибо за любой вклад и идеи

ответ

1

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

Создайте записи в новой таблице для каждой комбинации «Пользователь/Ресурс», которую вы хотите предоставить.

Затем, когда ресурс запрашивается из базы данных, просто присоедините таблицу безопасности к таблице ресурсов с помощью ключей ресурсов и отфильтруйте по таблице UserID таблицы безопасности для пользователя, который в настоящее время вошел в систему. выход, удаляя любые записи, для которых у пользователя нет доступа.

Относительно просто создавать формы, которые позволяют вам создавать новые записи в таблице безопасности, предоставляя пользователям доступ к ресурсам.

ПРИМЕЧАНИЕ: В конкретном случае, о котором вы упомянули, вам просто нужно поле в базе данных пользователя, которое содержит значение Первичного ключа в базе данных клиента, для которой у пользователя есть доступ.

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