確保 SharePoint 清單/文件庫視圖,似乎 (排序的) JQuery 的可能

這是另一個帖子中的我 系列 有關如何使用 jQuery 使用 SharePoint.
如果您想要瞭解更多關於 jQuery, 我強烈建議你: jQuery 在行動 由熊 Bibeault 和 Routes.

第一件事我還以為, 一旦我開始玩 jQuery, 是是否我們可以用它來確保 SharePoint 視圖. 答案是"不" (或至少, 我不宣稱自己可能). 不過, 很有可能要讓人看見的特定視圖的困難.

我的沙箱環境時這項工作的開始. 我寫了關於此處的環境: 快速而方便地: 為 SharePoint 創建您自己的 jQuery 沙箱.

以"安全"視圖, 請按照這些步驟操作:

  1. 創建的視圖如果想要確保. 我那樣做了,稱之為"擔保視圖".

    這是它看起來像當它不"安全":

    image

  2. 將內容編輯器 web 部件添加到視圖的頁面使用沙箱條所述的訣竅 (e 小節. 添加"流覽量 = 共用&ToolPaneView = 2"到的 URL).
  3. 找出您的 SharePoint _spUserId 由以下這些瘋狂的步驟, 信不信:
    1. 登錄到您的 SharePoint 環境.
    2. 在 web 瀏覽器的位址欄位, 類型: "javascript:警報("_spUserId).
    3. 記錄結果 (它是"13"在我的例子).

      image

  4. 將下面的 javascript 代碼添加到您在代碼視圖中的 CEWP:

    <腳本類型 ="文本 javascript"
        src ="../../jQuery Library/jquery-1.3.2.min.js">
    </腳本>
    
    <腳本類型 ="文本 javascript">
      $(功能() {
    
        警報(_spUserId);
    
        var theSecuredView = $(iframe[FilterLink * = 擔保的  view]');
    
        如果 ((theSecuredView.length > 0) && (_spUserId = = 13))
          $(iframe[FilterLink * = 擔保的  view]').父().父().父().html("<背景色 tr = 紅色><運輸署>沒有你的看法!</運輸署></tr>");
      });
    
    </腳本>
    

我已經包括了該警報(_spUserId) 線在那裡展示如何,這不是真的"確保安全"視圖, 但只使它更難見. 更多的時刻.

基本上, jQuery 尋找那些具有一個包含"安全 view"在其值的屬性頁面上的 iFrame. 一旦找到了,它, 我們檢查當前使用者是否是"13". 如果它是, 我們走到 DOM <TR> 標記 (其中我想通了,通過查看源和追蹤它) 然後替換那 TR 標籤與我的消息. 我真的不知道這是多麼旺盛 (我很懷疑, 事實上), 但它在我的沙箱工作. 如果找到了更好的方式, 關於它的博客,我會. 這是的結果:

image

按一下 OK 按鈕,資料會被替換大紅色的消息:

image

正如你可以告訴, 種方式讓我實現這個"安全"解決方案是允許 web 部件來呈現自己. 它完成後, 我用我"沒有視圖為你改寫其內容!"消息.

儘管它不是真的"擔保"視圖, 它是可能是有用的和與一些聰明的工作, 它最終可能安全更正式的意義上. 根本的問題是,用戶端獲取的所有資料,然後, 它獲取的資料後才, 它擦乾,再. 如果用戶端獲取資料, 聰明的使用者可以防止 jQuery 在所有運行並查看想看到什麼.

有其他缺點. 這種"安全"的方法基於 _spUserId. 我們想要真正安全的基礎完整的 SharePoint 安全模型, 或者說,至少按使用者名稱. 那變得越來越難, 但我看到就此主題寫一些好的東西, 所以我希望這一問題的好答案.

應修整自己的視圖清單, 如果可能的話. 我還沒有嘗試去弄明白. 是它可能, 但真的並不能解決根本的安全問題,因為有人可能仍然只是鍵入 URL 的他們想要的視圖 (如果他們知道它). 不過, 切邊有道理. 這是一個良好的可用性功能,它有助於混淆的東西. 如果最終使用者並不知道查看事件的存在, 他們可能不會嘗試使用它. 有時, 這就是不夠好.

運氣好的話, 我會有更多的要寫上這一問題隨著時間的推移.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

留言

您的電子郵件地址不會被公開. 必需的地方已做標記 *