<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Enterprise Library 2.0 Hands On Lab 翻譯(12):安全應(yīng)用程序塊(一)

      練習(xí)1:應(yīng)用程序安全性

      通過該練習(xí)將在一個已經(jīng)存在的應(yīng)用程序中添加認(rèn)證和基于角色的授權(quán)。

       

      第一步

      BugSmak.sln項目,默認(rèn)的安裝路徑應(yīng)該為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Security\exercises\ex01\begin,并編譯。

       

      第二步 在應(yīng)用程序中添加認(rèn)證

      1.選擇Debug | Start Without Debugging菜單命令運行應(yīng)用程序。應(yīng)用程序當(dāng)前沒有可以使用的認(rèn)證用戶。

      2.關(guān)閉應(yīng)用程序。

      3.在解決方案管理器中選擇Security \ SecurityHelper.cs文件,選擇View  | Code菜單命令,添加如下的命名空間。

      using System.Web.Security;

      4.在方法Authenticate中添加如下代碼。

      public static bool Authenticate(string username, string password)

      {
          
      bool authenticated = false;


          
      // TODO: Authenticate Credentials

          authenticated 
      = Membership.ValidateUser(username, password);


          
      // TODO: Get Roles

          
      return authenticated;

      }

      方法Authenticate將會被窗體LoginForm調(diào)用來驗證用戶身份,Membership.ValidateUser方法實現(xiàn)了用戶的驗證。Membership系統(tǒng)使用了provider模型,所以應(yīng)用程序不用去實現(xiàn)數(shù)據(jù)的存儲,ASP.NET ships提供了兩種Membership Provider,一是使用Microsoft SQL Server作為數(shù)據(jù)源,另一個是使用Windows Active Directory。也可以創(chuàng)建自己的Membership Provider,我們已經(jīng)實現(xiàn)了讀取從XML文件中讀取application members

      5.在解決方案管理器中選擇Security | Providers | ReadOnlyXmlMembershipProvider.cs,并選擇View | Code菜單命令回顧一下代碼。

      ReadOnlyXmlMembershipProvider(繼承于MembershipProvider)是一個自定義Provider的示例,它實現(xiàn)從一個未加密的XML文件中讀取,這并不是一個好的實踐,但是在該練習(xí)中卻非常的有用。

      6.打開App.config文件,查看membership provider的配置,認(rèn)證數(shù)據(jù)的存儲定義在一個Users.xml的文件中。

      <?xml version="1.0" encoding="utf-8"?>

      <configuration>

        
      <system.web>

          
      <membership defaultProvider="ReadOnlyXmlMembershipProvider">

            
      <providers>

              
      <add name="ReadOnlyXmlMembershipProvider"

                   type
      ="BugSmak.Security.Providers.ReadOnlyXmlMembershipProvider, BugSmak"

                   description
      ="Read-only XML membership provider"

                   xmlFileName
      ="Users.xml" />

            
      </providers>

          
      </membership>

          
      <roleManager enabled="true"

                       defaultProvider
      ="ReadOnlyXmlRoleProvider">

            
      <providers>

              
      <add name="ReadOnlyXmlRoleProvider"

                   type
      ="BugSmak.Security.Providers.ReadOnlyXmlRoleProvider, BugSmak"

                   description
      ="Read-only XML role provider"

                   xmlFileName
      ="Users.xml" />

            
      </providers>

          
      </roleManager>

        
      </system.web>

      </configuration>

      如果有一個自定義的Provider,必須對應(yīng)用程序進(jìn)行配置。

      7.打開Users.xml文件,可以看到定義了如下用戶。

      Username

      Password

      Role(s)

      Tom

      P@ssw0rd

      Employee

      Dick

      P@ssw0rd

      Developer

      Harry

      P@ssw0rd

      Manager

      其中代碼:

      <?xml version="1.0" encoding="utf-8" ?>

      <Users>

        
      <User>

          
      <UserName>Tom</UserName>

          
      <Password>P@ssw0rd</Password>

          
      <EMail>tom@contoso.com</EMail>

          
      <Roles>Employee</Roles>

        
      </User>

        
      <User>

          
      <UserName>Dick</UserName>

          
      <Password>P@ssw0rd</Password>

          
      <EMail>dick@contoso.com</EMail>

          
      <Roles>Developer</Roles>

        
      </User>

        
      <User>

          
      <UserName>Harry</UserName>

          
      <Password>P@ssw0rd</Password>

          
      <EMail>harry@contoso.com</EMail>

          
      <Roles>Manager</Roles>

        
      </User>

      </Users>

      8.選擇Debug | Start Without Debugging運行應(yīng)用程序,用Tom, Dick或者Harry正確的用戶登錄設(shè)置Membership Provider。選擇File | Sign Out退出,以一個錯誤的用戶名和密碼登錄。

      9.以用戶名Tom登錄,選擇Tasks | Raise New Bug菜單命令,將會給出一個提示信息“Sorry, you aren't allowed to access that form”。類似的嘗試一下Assign BugResolve Bug

      10.關(guān)閉應(yīng)用程序。

       

      第三步 添加基于角色的授權(quán)

      1.在解決方案管理器中選擇TaskForms \ RaiseBug.cs文件,選擇View | Code菜單命令,RaiseBug窗體不管用戶是EmployeeDeveloper還是Manager都允許訪問,如果用戶嘗試訪問沒有權(quán)限的窗體,將會拋出一個SecurityException異常。角色與窗體之間的對應(yīng)權(quán)限如下:

      TaskForm

      Role Required

      RaiseBug

      Employee, Developer, or Manager

      AssignBug

      Manager

      ResolveBug

      Developer or Manager

      2.在解決方案管理中選擇Security \ SecurityHelper.cs,單擊View | Code菜單命令,

      修改方法Authenticate的代碼如下。

      public static bool Authenticate(string username, string password)

      {
          
      bool authenticated = false;

          
      // TODO: Authenticate Credentials

          authenticated 
      = Membership.ValidateUser(username, password);

          
      // TODO: Get Roles

          
      if (!authenticated)

              
      return false;

          IIdentity identity;

          identity 
      = new GenericIdentity(username, Membership.Provider.Name);

          
      string[] roles = Roles.GetRolesForUser(identity.Name);

          IPrincipal principal 
      = new GenericPrincipal(identity, roles);


          
      // Place user's principal on the thread

          Thread.CurrentPrincipal 
      = principal;

          
      return authenticated;

      }


      3.打開App.config文件,查看角色的配置,數(shù)據(jù)存儲在一個Users.xml的文件中。

      <?xml version="1.0" encoding="utf-8"?>

      <configuration>

        
      <system.web>

          
      <membership defaultProvider="ReadOnlyXmlMembershipProvider">

            
      <providers>

              
      <add name="ReadOnlyXmlMembershipProvider"

                   type
      ="BugSmak.Security.Providers.ReadOnlyXmlMembershipProvider, BugSmak"

                   description
      ="Read-only XML membership provider"

                   xmlFileName
      ="Users.xml" />

            
      </providers>

          
      </membership>

          
      <roleManager enabled="true"

                       defaultProvider
      ="ReadOnlyXmlRoleProvider">

            
      <providers>

              
      <add name="ReadOnlyXmlRoleProvider"

                   type
      ="BugSmak.Security.Providers.ReadOnlyXmlRoleProvider, BugSmak"

                   description
      ="Read-only XML role provider"

                   xmlFileName
      ="Users.xml" />

            
      </providers>

          
      </roleManager>

        
      </system.web>

      </configuration>

      4.選擇Debug | Start Without Debugging運行應(yīng)用程序,分別用Tom, Dick Harry用戶登錄,他們的訪問權(quán)限如下:

      User

      Task Access

      Tom (Employee)

      Raise New Bug

      Dick (Developer)

      Raise New Bug

      Resolve Bug

      Harry (Manager)

      Raise New Bug

      Resolve Bug

      Assign Bug

      5.關(guān)閉應(yīng)用程序。

       

      更多Enterprise Library的文章請參考《Enterprise Library系列文章

      posted @ 2006-10-09 22:59  TerryLee  閱讀(5931)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 91孕妇精品一区二区三区| 视频一区视频二区在线视频| 亚洲国产精品日韩av专区| 特黄aaaaaaaaa毛片免费视频 | 久爱无码精品免费视频在线观看| 亚洲欧美色综合影院| 久久人人爽人人人人爽av| 色五开心五月五月深深爱| 伊人久久大香线蕉AV网禁呦| 夜夜爱夜鲁夜鲁很鲁| 久久精品国产午夜福利伦理| 亚洲欧美人成人综合在线播放 | 在线看av一区二区三区| 国产成人黄色自拍小视频| 日韩av日韩av在线| 高潮喷水抽搐无码免费| 无码欧美毛片一区二区三| 亚洲高潮喷水无码AV电影| 亚洲成人四虎在线播放| 少妇伦子伦精品无吗| 边吃奶边添下面好爽| 亚洲伊人精品久视频国产| 少妇激情一区二区三区视频小说 | 欧美偷窥清纯综合图区| 清徐县| 亚洲最大成人av免费看| 亚洲av成人免费在线| 亚洲高清最新AV网站| 久99久热这里只有精品| 亚洲午夜福利网在线观看| 亚洲一区二区美女av| 99久久婷婷国产综合精品青草漫画| 日韩国产精品中文字幕| 亚洲国产一区二区三区亚瑟| 农村老熟妇乱子伦视频| 亚洲国产精品毛片av不卡在线| 苍山县| 精选国产av精选一区二区三区 | 免费AV手机在线观看片| 视频一区视频二区视频三区| 国产95在线 | 亚洲|