国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

.NET框架中基于角色的安全性(2)

2024-07-10 13:07:32
字體:
供稿:網(wǎng)友
principal對(duì)象
  
    principal對(duì)象是實(shí)現(xiàn)了iprincipal接口的類的實(shí)例,這些對(duì)象用來表示用戶,并且包括了用戶的身份信息。system.security.principal命名空間包括了幾種類型的principal類,這些類中封裝了程序代碼運(yùn)行的的安全環(huán)境(security context)。我們?cè)诤竺鎸?huì)看到對(duì)用戶名和角色進(jìn)行檢查以確定根據(jù)用戶身份和角色資格是否可以讓用戶執(zhí)行某些特定操作的示例代碼。
  
    對(duì)于每一個(gè)線程來說都與一個(gè)principal對(duì)象相關(guān)聯(lián)。這個(gè)principal對(duì)象包括了表示運(yùn)行當(dāng)前線程的用戶的identity對(duì)象。我們可以利用thread類的靜態(tài)屬性currentprincipal來獲得這個(gè)principal對(duì)象。
  
    下面我們來看看iprincipal接口,該接口只有一個(gè)identity公共屬性和isinrole公共方法:
  
    1、identity屬性指向一個(gè)與principal 對(duì)象關(guān)聯(lián)的iidentity對(duì)象。
  
    2、isinrole方法需要一個(gè)字符串參數(shù),該字符串是一個(gè)角色的名稱,并且返回布爾值,指出principal對(duì)象是否屬于指定的角色。
  
    由于實(shí)際開發(fā)的需要,我們更多接觸到的是windowsprincipal類,下面將詳細(xì)討論windowsprincipal類,相對(duì)而言,genericprincipal類就要簡(jiǎn)略一些了。
  
    genericprincipal類
  
    genericprincipal類用來表示一個(gè)通過自定義驗(yàn)證的用戶,通常與genericidentity類一起使用。下面是一段簡(jiǎn)單的程序,說明了這兩個(gè)類如何使用:
  
  
  //創(chuàng)建一個(gè)genericidentity對(duì)象
  iidentity mygenericidentity = new genericidentity(strusername, "myauthenticationtype");
  
  //創(chuàng)建一個(gè)genericprincipal對(duì)象
  string[] roles = null;
  genericprincipal mygenericprincipal = new genericprincipal(mygenericidentity, roles);
  
  //將創(chuàng)建的genericprincipal對(duì)象附加到當(dāng)前線程上
  thread.currentprincipal = mygenericprincipal;
  
    注意在上面的例子中,我們可以把myauthenticationtype的驗(yàn)證類型換成熟知的kerberos身份驗(yàn)證或者ntlm身份驗(yàn)證。
  
    下面是驗(yàn)證的過程:
  
  
  //取得當(dāng)前線程的principal對(duì)象
  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類作為我們?cè)陂_發(fā)中最常遇到的實(shí)現(xiàn)了iprincipal接口的類,構(gòu)造函數(shù)相當(dāng)簡(jiǎn)單:
  public windowsprincipal(windowsidentity ntidentity);
  
    下面的代碼說明了如何創(chuàng)建一個(gè)windowsprincipal對(duì)象:
  
  
  windowsidentity wi = windowsidentity.getcurrent();
  windowsprincipal wp = new windowsprincipal(wi);
  
    windowsprincipal類中需要注意的是下面這三個(gè)重載的isinrole方法:
  
  
  public virtual bool isinrole(int);
  
    第1個(gè)重載函數(shù)接受一個(gè)整型參數(shù),該參數(shù)表示用戶組對(duì)應(yīng)的rid(rid也就是與域相關(guān)聯(lián)的下級(jí)憑證(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個(gè)重載函數(shù)接受一個(gè)字符串參數(shù),該參數(shù)表示一個(gè)用戶組名稱,比如mycomputer/developer(machinename/groupname)表示了機(jī)器名為mycomputer的計(jì)算機(jī)上的developer用戶組。不過對(duì)于系統(tǒng)內(nèi)置的用戶組就不能這樣表示了,比如administrators,不能表示為mycomputer/administrators,而應(yīng)該像builtin/administrators這樣,不過這樣總覺得有點(diǎn)多余,不夠自然。于是我們可以使用下面的重載函數(shù)。
  public virtual bool isinrole(windowsbuiltinrole);
  
    第3個(gè)重載函數(shù)接受一個(gè)windowsbuiltinrole枚舉類型參數(shù),下面就是windowsbuiltinrole枚舉中定義的值:
  
    1、accountoperator- 管理計(jì)算機(jī)上或域中的用戶帳號(hào)。
  
    2、administrator- 可以任意訪問計(jì)算機(jī)或域
  
    3、backupoperator- 可以在文件系統(tǒng)上執(zhí)行備份和恢復(fù)操作。
  
    4、guest- 和user類似,不過有更多的限制。
  
    5、poweruser- 和administrator地位相近,不過有一些限制。
  
    6、printoperator- 執(zhí)行打印操作。
  
    7、replicator- 在域中執(zhí)行文件復(fù)制。
  
    8、systemoperator- 管理計(jì)算機(jī)。
  
    9、user- 用戶不能執(zhí)行危害系統(tǒng)或者影響整個(gè)系統(tǒng)的操作。中國(guó)最大的web開發(fā)資源網(wǎng)站及技術(shù)社區(qū),
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 错那县| 临西县| 社会| 乌拉特后旗| 驻马店市| 司法| 黄冈市| 阜阳市| 神木县| 邯郸县| 寿光市| 班玛县| 富源县| 晴隆县| 乡城县| 肥东县| 上虞市| 隆回县| 来宾市| 宁城县| 南开区| 沈丘县| 民乐县| 长宁县| 潜江市| 临江市| 石城县| 邮箱| 甘谷县| 五常市| 襄城县| 南华县| 策勒县| 临猗县| 中阳县| 阳高县| 威信县| 阜新市| 梁河县| 民勤县| 福海县|