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

首頁 > 編程 > .NET > 正文

學習一下.net framework 中有關安全的內容

2024-07-10 13:11:13
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  •   好容易在繁重的開發任務之余抽出點時間學習一些東西。發現機子里有幾個關于 system.security 內容的示例,這一個命名空間以前還真是從來沒用過,正好拿來學習一下。由于不是系統的學習,不好組織,想了想,就以示例來說明吧。 

      一、設定權限

    1[fileiopermission(securityaction.demand, write= "c://temp.txt")]
    2public class app : system.windows.forms.form
    3{
    4    //略
    5}
      fileiopermissionattribute 定義于 system.security.permissions 里。它繼承于 securityattribute,在這個例子中,要求使用 app 類時必須具有對 c:/temp.txt 文件的寫權限。

      .net framework 的文檔中關于安全要求有這樣一段話:“若要確保只有被授予了指定權限的調用方才能夠調用您的代碼,可以聲明方式或強制方式要求您的代碼的調用方擁有特定的權限或權限集。要求使運行庫執行安全檢查,從而對調用代碼實施限制。在安全檢查過程中,運行庫遍歷調用堆棧,檢查堆棧中每個調用方的權限,然后確定是否已將要求的權限授予每個調用方。如果發現某個調用方沒有要求的權限,則安全檢查失敗,并引發 securityexception?!?/p>

      例子中,權限是以聲明的方式出現的。securityaction.demand 可以作用于類或方法,在這里是作用于類上。write 是 fileiopermission 的屬性之一,其它常用屬性還有 read、append、all 等等。

      securityaction 枚舉中還有一些值是作用于 assembly 上的。比如以下的例子:

    [assembly:securitypermission(securityaction.requestminimum ,unmanagedcode=true)]
      securityaction.requestminimum 是請求運行的最小權限。這一行要求程序集允許調用非托管代碼。

      除了聲明方式外,還可以使用強制方式。如下的代碼:

     1fileiopermission fileperm = new fileiopermission(fileiopermissionaccess.allaccess, "c://temp.txt");
     2try
     3{
     4    fileperm.demand();
     5   
     6    // code to access file goes here
     7}
     8catch (securityexception excep)
     9{
    10    messagebox.show (excep.message);
    11    return;
    12}
    13
      二、用戶角色管理

      用戶及其角色的管理是在許多程序中都要使用到的。如今 asp.net 2.0 對于這方面有了大大增強,開發人員不需要很了解技術就可以做出很不錯的應用。不過對于 windows form 應用程序來說,不少地方還需要程序員自己設定。

      假定我們已知曉了 username 以及它所屬于的 roles,那么可以這樣來設置當前線程的 principal:

    1genericidentity genident = new genericidentity(username);
    2genericprincipal genprin = new genericprincipal(genident, roles);
    3thread.currentprincipal = genprin;
    4
      隨后我們有三種辦法來進行用戶角色驗證。

      第一種方法是使用 genericprincipal.isinrole 方法:

    1genericprincipal currentprin = thread.currentprincipal as genericprincipal;
    2
    3if (currentprin != null && currentprin.isinrole("manager"))
    4{
    5    //略
    6}
    7
      第二種方法則是使用 principalpermission 類,類似于權限設定中的強制方式:

     1principalpermission prinperm = new principalpermission(null, "manager");
     2
     3try
     4{
     5    prinperm.demand();
     6
     7    //do something
     8}
     9catch
    10{
    11    //error handling
    12}
      第三種方式則類似于權限設定中的聲明方式:

     1private void decpermbutton_click(object sender, system.eventargs e)
     2{
     3    try
     4    {
     5        performmanageraction();
     6        // do something
     7    }
     8    catch
     9    {
    10        // error handling
    11    }
    12}
    13
    14[principalpermission(securityaction.demand, role="manager")]
    15void performmanageraction()
    16{
    17}
      關于安全的另一個重要內容是加密。今天沒空寫了,改天再說。

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 北京市| 革吉县| 岳阳市| 青岛市| 宁蒗| 元氏县| 木兰县| 米林县| 印江| 淮安市| 望城县| 独山县| 南郑县| 虞城县| 吉水县| 上虞市| 五莲县| 辽宁省| 屏南县| 资讯 | 师宗县| 阳曲县| 巴东县| 郁南县| 汕头市| 高安市| 仁怀市| 江阴市| 额济纳旗| 宝丰县| 海口市| 于都县| 简阳市| 合川市| 舒兰市| 杂多县| 晋城| 集安市| 武冈市| 江油市| 时尚|