Создание Windows-приложений на основе Visual C#



Использование объектов WindowsIdentity и WindowsPrincipal


Существует два способа создания объекта WindowsPrincipal. Разница между ними в том, что один способ проверяет введенную информацию один раз, а второй — постоянно.

Если однократной проверки роли достаточно, то создаем объект WindowsPrincipal следующим образом:

// Инициализируем объект класса WindowsIdentity // с помощью статического метода WindowsIdentity.GetCurrent() WindowsIdentity identity = WindowsIdentity.GetCurrent(); // Создаем новый объект класса WindowsPrincipal // и передаем в качестве параметра объект identity WindowsPrincipal principal = new WindowsPrincipal(identity);

Если же вам необходимо проверять роль пользователя постоянно, то лучше создать объект WindowsPrincipal следующим образом:

// Указываем домену приложения политику ролевой безопасности // с помощью члена WindowsPrincipal перечисления PrincipalPolicy, // переданного в статический метод AppDomain.CurrentDomain. // SetPrincipalPolicy. AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); // После того как новая политика установлена, вы можете использовать // объект из статического свойства CurrentPrincipal класса Thread. WindowsPrincipal principal = System.Threading.Thread.CurrentPrincipal as WindowsPrincipal;

Создайте новое консольное приложение и назовите его WindowsIdentityandPrincipal. Далее привожу листинг с комментариями:

using System; //Подключаем пространства имен Threading и Principal using System.Threading; using System.Security.Principal;

namespace WindowsIdentityandPrincipal {

class Class1 { [STAThread] static void Main(string[] args) { // Создаем и инициализируем объекты // WindowsPrincipal и WindowsIdentity WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); // Выводим информацию, содержащуюся в объекте класса WindowsPrincipal Output("Name", principal.Identity.Name); Output("Type", principal.Identity.AuthenticationType); Output("Authenticated", principal.Identity.IsAuthenticated.ToString()); // Выводим информацию, содержащуюся в объекте класса WindowsIdentity Output("IdentName", identity.Name); Output("IdentType", identity.AuthenticationType); Output("IdentIsAuthenticated", identity.IsAuthenticated.ToString()); Output("IsAnonymous", identity.IsAnonymous.ToString()); Output("IsGuest", identity.IsGuest.ToString()); Output("IsSystem", identity.IsSystem.ToString()); Output("Token", identity.Token.ToString()); }

//Метод Output выводит информацию на экран, причем myName — это название //параметра, а myValue — его значение. public static void Output(string myName, string myValue) { Console.WriteLine(myName + "= {0}", myValue); }

Листинг 10.2.

В результате выводится полный список значений WindowsIdentity и WindowsPrincipal на данном компьютере (рис. 10.12).

Результат приложения WindowsIdentityandPrincipal

Рис. 10.12.  Результат приложения WindowsIdentityandPrincipal

На диске, прилагаемом к книге, вы найдете приложение WindowsIdentityandPrincipal (Code\Glava10\ WindowsIdentityandPrincipal).




Содержание  Назад  Вперед