下面是验证的过程:
//取得当前线程的principal对象 IPrincipal principal = Thread.CurrentPrincipal;
if (!principal.Identity.Name.Equals("TrustedUser")) { throw new SecurityException( strUserName + " NOT PERMITTED to proceed.\n"); } Console.WriteLine( strUserName + " is PERMITTED to proceed.\n");
WindowsPrincipal类
WindowsPrincipal类作为我们在开发中最常遇到的实现了IPrincipal接口的类,构造函数相当简单:
public WindowsPrincipal(WindowsIdentity ntIdentity);
下面的代码说明了如何创建一个WindowsPrincipal对象:
WindowsIdentity wi = WindowsIdentity.GetCurrent(); WindowsPrincipal wp = new WindowsPrincipal(wi);
WindowsPrincipal类中需要注意的是下面这三个重载的IsInRole方法:
public virtual bool IsInRole(int);
第1个重载函数接受一个整型参数,该参数表示用户组对应的RID(RID也就是与域相关联的下级凭证(domain-relative subauthority)ID)。RID值定义在Platform SDK的头文件Winnt.h中,Winnt.h中包括一些常见的用户和组,比如DOMAIN_USER_RID_ADMIN、 DOMAIN_USER_RID_GUEST、DOMAIN_GROUP_RID_ADMINS、DOMAIN_GROUP_RID_USERS和DOMAIN_GROUP_RID_GUESTS等等,可以在...\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include文件夹中找到该文件。
public virtual bool IsInRole(string);
第2个重载函数接受一个字符串参数,该参数表示一个用户组名称,比如MYCOMPUTER\Developer(MachineName\GroupName)表示了机器名为MYCOMPUTER的计算机上的Developer用户组。不过对于系统内置的用户组就不能这样表示了,比如Administrators,不能表示为MYCOMPUTER\Administrators,而应该像BUILTIN\Administrators这样,不过这样总觉得有点多余,不够自然。于是我们可以使用下面的重载函数。
public virtual bool IsInRole(WindowsBuiltInRole);
第3个重载函数接受一个WindowsBuiltInRole枚举类型参数,下面就是WindowsBuiltInRole枚举中定义的值:
文章来源于领测软件测试网 https://www.ltesting.net/