Иллюстрированный самоучитель по Architecture .NET

Роли .NET в Windows

Чтобы внести изменения в существующей группе, выделите ее, щелкните на ней правой кнопкой мыши и выберите команду Properties (Свойства). Щелкнув на кнопке Add (Добавить), вы получите диалоговое окно со всеми пользователями системы. Теперь можно выбирать нужных пользователей и добавлять их в группу. На рис. 13.3 показано добавление пользователя в группу HotelAdmin. Обратите внимание, что JaneAdmm и РеterT– это ранее созданные и настроенные учетные записи пользователей. Удаление пользователей из группы выполняется с помощью кнопки Remove (Удалить).

В программе имя роли надо указывать, используя имя домена или машины. На моей машине роль CustomerAdmm обозначается как "HPDESKTOP\\CustomerAdmm", а роль HotelAdnun – как "HPDESKTOP\\HotelAdmin". Для заранее установленных групп используется префикс "BUILTIN" ("ВСТРОЕННЫЙ"), например, встроенная группа Administrators (Администраторы) обозначается как "BUILTIN\\Admmistrators" ("ВСТРОЕННЫЕ\\Администраторы"). Чтобы избежать проблем, связанных с переводом и интернационализацией, для обращения к встроенным ролям используется перечисление System::Security::Principal::WindowsBuiltlnRole (Система. Защита::Принципал::WindowsBuiltInRole). Вместо того, чтобы использовать строку "BUILTIN\\Administrators" ("ВСТРОЕННЫЕ\\Администраторы"), группу Administrators (Администраторы) можно обозначать как WindowsBuiltlnRole::Administrator (Wmdows – Администратор).

Иллюстрированный самоучитель по Architecture .NET › Защита › Роли .NET в Windows
Рис. 13.3. Добавление в группу пользователя JaneAdmin Уже добавлен пользователь PeterT

Пример RoleBasedSecurity, который мы рассматривали в предыдущем разделе, на этот раз проверяет, имеет ли текущий пользователь несколько ролей. Вы можете передавать роль в виде строки или использовать перечисление WindowsBuiltlnRole. Помните, что необходимо изменить программу, чтобы использовать фактическое имя вашей машины, когда вы выполняете пример на вашем компьютере. Для выбора ветвей кода, соответствующих членству в этих ролях, в программе используется оператор условного перехода if-else.

// использовать роль, чтобы выбрать ветвь кода
String *adminRole = "HPDESKTOP\\CustomerAdmin"; // Строка
if(wp › Is!nRole(adminRole))
{
Console.:WriteLine(
"In Customer Administrator role.");
// "В роли Администратора."
// выбрать ветвь кода для CustomerAdmin… }
else {
Console::WriteLine(
"Not in Customer Administrator role.");
// "He в роли Администратора."
// не выбирать ветвь кода для CustomerAdmin… }
// использование встроенных ролей для выбора ветви кода
if(wp › Is!nRole(WindowsBuiltlnRole::Administrator))
// если Администратор {
Console::WriteLine(
"In Administrator role");
// "В роли Администратора"
// выбрать ветвь кода для Администратора… }
else {
Console::WriteLine(
"Not in Administrator role.");
// "He в роли Администратора."
// не выбирать ветвь кода для Администратора…
}
if(wp › Is!nRole(WindowsBuiltlnRole::Guest))
// если Гость
{
Console::WriteLine("In Guest role"); // "В роли Гостя"
// выбрать ветвь кода для Гостя… }
else {
Console::WriteLine(
"Not in Guest role."); // "He в роли Гостя."
//не выбирать ветвь кода для Гостя…
}
if(wp › Is!nRole(WindowsBuiltlnRole::User))
// если Пользователь
{
Console::WriteLine(
"In User role");
// "В роли Пользователя" // выбрать ветвь кода для Пользователя…
}
else
{
Console::WriteLine (
"Not in User role"); // "He в роли Пользователя"
// не выбирать ветвь кода для Пользователя… }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.