确保 SharePoint 列表/文档库视图似乎 (排序的) JQuery 的可能

这是另一个帖子中的我 系列 有关如何使用 jQuery 使用 SharePoint.
如果您想要了解更多关于 jQuery, 我强烈推荐: jQuery 在行动 由熊 Bibeault 和耶胡达 · 卡茨.

我想到的第一件事之一, 一次,我开始玩 jQuery, 是是否我们可以用它来确保 SharePoint 视图. 答案是"不" (或至少, 我并不认为它有可能). 不过, 很有可能要让人看见的特定视图的困难.

我的沙箱环境时这项工作的开始. 我写了关于此处的环境: 快速、 方便: 创建您自己的 jQuery 沙箱的 SharePoint.

以"安全"视图, 请按照这些步骤:

  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

单击确定按钮和数据替换为大红色消息:

image

您可以看出, 种方式让我实现这个"安全"解决方案是允许 web 部件来呈现自己. 它完成后, 我用我"没有查看您覆盖其内容!"消息.

尽管它不是真的"担保"视图, 它是可能有用,并与一些聪明的工作, 它最终可能安全更正式的意义上. 根本的问题是,客户端获取的所有数据,然后, 它获取的数据后才, 它擦干,再. 如果客户端获取数据, 聪明的用户可以看到她想要看到并阻止 jQuery 在所有运行.

有其他缺点. 这种"安全"的方法基于 _spUserId. 我们想要真正安全的基础完整的 SharePoint 安全模型, 或者说,至少按用户名称. 那变得越来越难, 但我看到一些好的东西写在这个问题上, 所以我希望有好的回答这一问题.

应修剪视图本身的列表, 如果可能的话. 我还没有尝试去弄明白. 是它可能, 但真的并不能解决根本的安全问题,因为有人可能还只是键入的 URL 的他们想要的视图 (如果他们知道它). 不过, 切边有道理. 这是一个良好的可用性功能,它有助于混淆的东西. 如果最终用户并不知道查看事件的存在, 他们可能不会尝试使用它. 有时, 这就是不够好.

幸运的是, 我会有更多要写上这一问题随着时间的推移.

</结束>

订阅我的博客.

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

留言

您的电子邮件地址不会被公开. 必需的地方已做标记 *