Иногда возникает необходимость ограничить доступ некоторым пользователям или пользователям с определенной ролью к определенным классам (редактирование, создание новых объектов/удалять/просматривать список). Для этого необходимо настроить полномочия для пользователей/ролей пользователей.
Создать роль, для которой будут произведены соответствующие настройки (например, отключена возможность удаления объектов из списка для определенного класса), можно двумя способами:
- в разделе “Администрирование\Роли” в приложении;
- с помощью Security Console.
Список пользователей создается на основе БД полномочий.
Полномочия настраиваются в разделе “Классы” на форме редактирования роли или пользователя. Например, есть 4 класса. Один не доступен для чтения, второй - для редактирования, третий - для создания новых объектов, четвертый - для удаления. Настройка полномочий будет выглядеть следующим образом:
Создание полномочий на классы при аутентификации на основе форм
Для настройки полномочий следует добавить пользователя(ей) в разделе “Администрирование\Пользователи” в приложении (если пользователей ограниченное количество и список не построен на основе БД полномочий). Далее следует выполнить одно из действий:
- присвоить пользователю роль с ограниченными полномочиями;
- ограничить полномочия на форме редактирования пользователя.
Создание полномочий на классы при windows-аутентификации
Для того чтобы ограничить полномочия пользователей в web-приложении с windows-аутентификацей следует:
- создать роль, присваиваемую по умолчанию:
<configuration>
<appSettings>
<add key="DefaultRoles" value="Tester"/>
<!--...-->
</appSettings>
<!--...-->
</configuration>
- настроить для нее полномочия;
- добавить пользователей в БД системы полномочий:
protected void Page_Load(object sender, EventArgs e)
{
//...
ApplyTreeViewCookie();
// При выполнении метода CreateDbUser в БД будут добавлены следующие объекты:
// 1. Пользователь с привязкой к домену и к ролям, заданным по умолчанию.
// 2. Домен пользователя, если ранее он отсутствовал в системе полномочий.
if (AuthenticationAdapter.GetDbUser(Context.User.Identity.Name) == null)
{
AuthenticationAdapter.CreateDbUser(Context.User.Identity.Name);
}
//...
fio.Text = Context.User.Identity.Name;
//...
}