2

我正在尝试使用 SPServices jQuery 库来读取 Sharepoint 2007 站点上用户的权限掩码。我可以成功获得权限掩码的编号,但我无法将权限掩码响应转换为有意义的内容。

我正在使用以下 Javascript 获取权限掩码:

function getPermissions(url, sobj) {

  $().SPServices.defaults.webURL = url;

  //FIRST DO SITE

  $().SPServices({

     operation: "GetPermissionCollection",

     async: false,

     objectName: url,

     objectType: "Web",

     completefunc: function(xData, Status){

        $(xData.responseXML).find("Permission").each(function(){

           sobj.Permissions.push($(this).attr("UserLogin"));

           sobj.PermissionsLevel.push($(this).attr("Mask"));

        });

     }

  });


  //NOW DO LISTS

  for (x in sobj.Lists) {

      $().SPServices({

          operation: "GetPermissionCollection",

          async: false,

          objectName: sobj.Lists[x].InternalName,

          objectType: "List",

          completefunc: function(xData, Status){

              $(xData.responseXML).find("Permission").each(function(){

                 sobj.Lists[x].Permissions.push($(this).attr("UserLogin"));

                 sobj.Lists[x].PermissionsLevel.push($(this).attr("Mask"));

              });

          }

      });

   }

}

几个例子是:A)-2013006751 B)-1140590865

这些对应的二进制值是(假设使用二进制补码): A) 10001000000000111111010001100000 B) 10111100000000111111011011101110

我无法理解这些数字如何等同于用户实际拥有的权限。使用来自http://jamestsai.net/Blog/post/Understand-SharePoint-Permissions-Part-1-SPBasePermissions-in-Hex2c-Decimal-and-Binary-The-Basics.aspx的权限表,它只是没有t 似乎与用户实际拥有的权限相匹配。

我现在不在工作,所以我会用更多信息更新它,但有人能从我目前掌握的信息中发现我做错了什么吗?

4

1 回答 1

2

逐位比较是您所追求的。

例如

var permissionMask = -2013006751;
var viewPages = 131072; // 100000000000000000
if((permissionMask & viewPages)===viewPages)
{
    alert('person has view pages permission');
}

有关更详细的说明,请参见此处。

于 2012-11-20T20:17:27.140 回答