虽然我目前正在我们的 Sharepoint 服务器上开发这个 WinForms 应用程序,但我打算让完成的程序在域上的任何计算机上运行。我正在使用 WSS Web 服务从 Sharepoint 获取我使用的所有信息。
我已经编写了一些代码,它将检查 Sharepoint 权限掩码,对掩码进行逻辑或,以获取它涵盖的所有权限,但我无法返回当前用户的 Sharepoint 掩码。我希望用户能够通过 Windows 身份验证直接登录,所以这是我的直接想法。
NetworkCredential credentails = CredentialCache.DefaultNetworkCredentials;
var userInfo = userGroupService.GetUserInfo(credentails.UserName);
但是,尽管我能够返回整个 Sharepoint 站点的权限集合DefaultNetworkCredentials
(如以下代码段所示),但属性是空字符串,因此我无法使用它来获取用户名。
permissionService.Credentials = CredentialCache.DefaultNetworkCredentials;
permissionService.Url = "http://localhost/mySite/_vti_bin/Permissions.asmx";
// Web service request works
XmlNode node = permissionService.GetPermissionCollection(siteName, "Web");
// But I need to identify current user from this collection somehow still
我读到 Windows 身份验证存在双跳问题,我想避免这种问题,但是当我在运行 Sharepoint 和 IIS 的服务器上进行开发时,我看不到这会导致立即出现问题。
有没有办法解决这个问题或更好的方法来获取当前用户的权限掩码?