SharePoint 获取当前用户帐户名

SharePoint get current user accountname?

本文关键字:用户 获取 SharePoint      更新时间:2023-09-26

SharePoint 2010 是否将当前用户的帐户名存储在全局可访问的 JS 对象中的某个位置?

我能找到的每个解决方案都涉及 ajax Web 服务调用的一些变体,这似乎是一个非常繁重的解决方案,用于访问应该是微不足道的信息。

我可以轻松访问的内容:

  • __spUserId获取当前用户 ID
  • 通过抓取功能区的html来获取当前用户名(例如:$('#zz17_Menu').text()

但这些都不是帐户名。

我宁愿不做的事情:

  • 通过对 GetUserProfileByName 的 SOAP 调用获取当前用户信息
  • 通过对 .. 进行 Ajax 调用来获取当前用户信息/_layouts/userdisp.aspx

对于其他偶然发现这一点的人,一年后我想出了办法。

到你的母版页注册SPSWC(如果你使用的是Randy Drisgill的初学者母版,它已经在那里了)。

<%@ Register Tagprefix="SPSWC" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

然后,在您想要访问属性(例如:用户名)之前,拉入数据

<SPSWC:ProfilePropertyLoader runat="server"/>

接下来,访问其中一个属性,我建议使用 TitleMode 将其嵌入到 <script> 元素中。

<script>
  var username = '<SPSWC:ProfilePropertyValue PropertyName="UserName" TitleMode="true" runat="server"/>';
</script>

我们现在使用它,如这个 PasteBin 演示所示,用一些属性填充全局,如名字、姓氏、用户名、个人资料图片、状态。

您确实需要进行 Web 服务调用才能可靠地执行此操作。值得庆幸的是,SPServices使这样做变得快速而轻松。

http://spservices.codeplex.com/wikipage?title=$%28%29.SPServices.SPGetCurrentUser

$().SPServices.SPGetCurrentUser({
    fieldName: "Name",
    debug: false
});