乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Jetspeed2學習筆記二

       cecho 2007-03-25
      6、
      一個Subject也許會與一個AccessControlContext聯(lián)系在一起,可以通過如下方法返回一個與AccessControlContext聯(lián)系在一起的subject
      public static Subject getSubject(final AccessControlContext acc);
       
      7、
      一個特定的Subject通過doAs方法來執(zhí)行一個特定的操作(Action),原文如下:
      The following static methods may be called to perform an action as a
      particular Subject:
       
      public static Object
      doAs(final Subject subject,
      final java.security.PrivilegedAction action);
       
      public static Object
      doAs(final Subject subject,
      final java.security.PrivilegedExceptionAction action)
      throws java.security.PrivilegedActionException;
      };
       
      8、
      一個演示第一個doAs方法的例子:
      假設(shè)有個用戶叫Bob,他已經(jīng)通過了LoginContext(登陸)驗證,隨后,一個擁有com.ibm.security.Principal標識的subject產(chǎn)生了,這個Principal被命名為“Bob”。同時假設(shè)SecurityManager已經(jīng)安裝,并且訪問策略文件(PolicyFile)存在,并定義如下:
       
       
      // 授予 "BOB"訪問(讀)文件 "foo.txt"的許可
      grant Principal com.ibm.security.Principal "BOB" {
      permission java.io.FilePermission "foo.txt", "read";
      };
      以下是本應(yīng)用的代碼:
      class ExampleAction implements java.security.PrivilegedAction {
      public Object run() {
      java.io.File f = new java.io.File("foo.txt");
      // 以下代碼將會觸發(fā)一個安全檢測(通過Policy)
      if (f.exists()) {
      System.out.println("File foo.txt exists");
      }
      return null;
      }
      }
      public class Example1 {
      public static void main(String[] args) {
      // 驗證并鑒別用戶 "BOB",這個過程在LoginContext那章中有描述
      Subject bob;
      // 在驗證階段,將bob與此Subject相關(guān)聯(lián)
      // "BOB"的身份執(zhí)行"ExampleAction"
      Subject.doAs(bob, new ExampleAction());
      }
      }
       
      在執(zhí)行過程中,ExampleAction在調(diào)用 f.exists() 時將遭遇一個安全檢測。由于執(zhí)行ExampleAction的是BOB,而在策略(Policy)文件中,已經(jīng)賦予了Bob有此操作的相關(guān)權(quán)限,ExampleAction將通過安全檢測。如果策略被改變的話,一個SecurityException的錯誤將被拋出。
       
      9、
      Principals用于描述Subject的身份,其必須繼承java.security.Principal java.io.Serializable 接口
       
      10、
      LoginContext提供了4中構(gòu)造器,如下:
       
      public LoginContext(String name) throws LoginException;
      public LoginContext(String name, Subject subject) throws
      LoginException;
      public LoginContext(String name, CallbackHandler callbackHandler)
      throws LoginException
      public LoginContext(String name, Subject subject,
      CallbackHandler callbackHandler) throws LoginException
       
       它們都統(tǒng)一有個參數(shù)name,這個參數(shù)指定了驗證所使用的LoginModul
       
      Jaas配置文件如下:
      WorkDesk {
       net.joinwork.bpm.workdesk.LoginModule required;
      };
       
      // LoginContext 實例化一個新的Subject
      LoginContext lc = new LoginContext("WorkDesk");
      try {
      // 驗證這個Subject
      lc.login();
      System.out.println("驗證成功!");
      // 獲得被驗證成功的Subject
      Subject subject = lc.getSubject();
      ...
      // 辦完事退出
      lc.logout();
      } catch (LoginException le) {
      System.err.println("authentication unsuccessful: " +le.getMessage());
      }
       
       
      10、
      要配置如下圖所示的區(qū)域,可以編輯pages目錄下的:“folder.metadata”文件,這個文件控制區(qū)域的內(nèi)容
       
      11、
      Portlet規(guī)范明確定義了Portlet應(yīng)用如何使用“用戶屬性”,首先,必須在protlet.xml文件中定義屬性如下:
      <portlet-app version="1.0" xmlns="http://java./xml/ns/portlet/portlet-app_1_0.xsd">
                <user-attribute>
                  <description>User Given Name</description>
                  <name>user.name.given</name>
                </user-attribute>
                <user-attribute>
                  <description>User Last Name</description>
                  <name>user.name.family</name>
                </user-attribute>
                <user-attribute>
                  <description>User eMail</description>
                  <name>user.home-info.online.email</name>
                </user-attribute>
                ...
          </portlet-app>
         一旦屬性如上定義,當前的portlet就可以利用PortletRequest 中定義的USER_INFO常量來從登陸用戶處以無法更改的Map數(shù)據(jù)格式來獲得當前的值,代碼如下:
      Map userInfo = (Map)request.getAttribute(PortletRequest.USER_INFO);
      String givenName = (userInfo!=null)? (String)userInfo.get("user.name.given") : "";
      String lastName = (userInfo!=null) ? (String)userInfo.get("user.name.family") : "";
      String email = (userInfo!=null) ? (String)userInfo.get("user.home-info.online.email") : "";

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多