2

我正在使用 SPServices.SPGetCurrentUser 来获取当前登录的用户,然后确定他们所在的组,最后根据该确定禁用一个字段。它有效,但有一个大问题。这是一个仅限 SP 2010 Foundation Intranet 的环境,它是安全的 (SSL)。因此,访问我们网站的唯一方法是通过https://internalurl.

我以前从未遇到过这个问题,使用 SPServices,但是使用此代码,我收到了 IE 安全警告:“您只想查看安全传送的网页内容吗?”

通过一次注释掉一行,我确定 SPServices.SPGetCurrentUser 行是导致警告的原因。我想这与它如何/在哪里寻找这些信息有关?

我的问题是,有没有办法绕过这个警告?以下是我目前发现的解决方案,其中没有一个真正适用于我的场景: 1. 将站点添加到 IE 受信任站点,或者调整浏览器安全设置。(我们有 3000 多个用户,不想走这条路) 2. 自定义编码解决方案。(不是一个选项,我们只是无代码。JQuery 和 SPServices 是我们所能做到的) 3. 不要使用 SSL。(不是一种选择。我们是一家金融机构,甚至像这样的内部 URL 也只能通过 SSL 访问。)

这是代码:

<script language="javascript" type="text/javascript" src="/CodeLibrary/jquery.SPServices-0.7.1a.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
  $().SPServices({  
      operation: "GetGroupCollectionFromUser",  
      userLoginName: $().SPServices.SPGetCurrentUser(),  
      async: false,  
      completefunc: function(xData, Status) { 
        //if current user is not a member of this group...       
        if($(xData.responseXML).find("Group[Name='Change Control - Admins']").length != 1)  
        {  
           //...disable the following fields
           $("textarea[Title='Requirements']").attr("disabled", "disabled");  
        }  
      }  
    });  
});
</script>

有任何想法吗?SPServices.SPGetCurrentUser 等的替代品?

4

1 回答 1

4

我能够自己解决这个问题。这就是我所做的...

SPServices.SPGetCurrentUser 引用 /_layouts/ 文件夹中的文件。在 SPServices 代码中,该引用是相对的。无论出于何种原因,SharePoint 都不会自动使用 https 来查找它。它只是使用http ...至少据我所知。所以我所做的是复制 jquery.SPServices-0.7.2.min.js 文件,将其重命名为 jquery.SPServices-0.7.2.min.ssl.js,然后更新所有对 /_layouts/ 文件夹的引用(只有一对),到完整的 https URL。这解决了问题。不再弹出安全警告,代码按预期工作。

希望这对某人有用!

于 2013-01-31T19:47:24.790 回答