如何在 Sharepoint 中找到已登录的用户?

Posted

技术标签:

【中文标题】如何在 Sharepoint 中找到已登录的用户?【英文标题】:How to find the logged in user in Sharepoint? 【发布时间】:2011-01-26 06:24:35 【问题描述】:

我开发了一个必须部署在 Sharepoint 服务器上的“Web 部件”。我需要用户的用户名,该用户已登录 Web 部件中的 sharepoint 服务器。

我如何获得该用户名?

【问题讨论】:

【参考方案1】:

以下对我有用:

SPWeb theSite = SPControl.GetContextWeb(Context);
SPUser theUser = theSite.CurrentUser;
string strUserName = theUser.LoginName;

然后检查this。

【讨论】:

或者更好:string strUserName = SPContext.Current.Web.CurrentUser.LoginName;【参考方案2】:

你可以使用:

SPWeb web = SPControl.GetContextWeb(this.Context);
string userName = web.CurrentUser.LoginName;

string userName = this.Context.User.Identity.Name;

在尝试提取用户名之前,您还应该检查this.Context.User.Identity.IsAuthenticated 以确保有用户登录。

【讨论】:

我更喜欢第二个选项。对我来说,Catch 是与 AD 的内部映射,它有一堆像 0#.w|domain\username 这样的垃圾前辈。但除此之外,第二个实现对我来说效果很好。 @GoldBishop,您可以使用以下代码从声明表示中获取用户名: SPClaimProviderManager mgr = SPClaimProviderManager.Local; if (mgr != null) userName = mgr.DecodeClaim(SPContext.Current.Web.CurrentUser.LoginName).Value; 有趣,我通过一些测试来运行它,看看它是如何解释的。但除此之外,我只是做了userid = this.Context.User.Identity.Name; userid = userid.Substring( userid.IndexOf( '|' ) + 1 );,并且能够将垃圾与我需要的信息分开。 哪个有效,但它不是垃圾。这是一个声明标识符,欢迎来到新的身份世界:) 取决于你如何看待它,因为我需要它的垃圾信息。我意识到这些信息是描述性的,但它是我不需要的开销文本;)【参考方案3】:

大家好,我得到了我的问题的答案希望这对你们所有人都有用... 首先在 Web 部件中添加对 MicrosoftSharepoint.dll 文件的引用。 然后写 使用 Microsoft.SharePoint;

            string username;
            string sspURL = "URL where Sharepoint is deployed";

            SPSite site = new SPSite(sspURL);

            SPWeb web = site.OpenWeb();

            SPUser user = web.CurrentUser;

            username = user.LoginName;

            site.AllowUnsafeUpdates = true;

你的, 吉格

【讨论】:

【参考方案4】:

SPContext.Current.Web.CurrentUser

【讨论】:

【参考方案5】:

//不要忘记添加 System.DirectoryServices.AccountManagement 作为参考并使用 System.DirectoryServices.AccountManagement;

    PrincipalContext insPrincipalContext = new PrincipalContext(ContextType.Domain, "MyDomain","DC=MyDomain,DC=com");
    UserPrincipal insUserPrincipal = new UserPrincipal(insPrincipalContext);
    insUserPrincipal.Name = "*";
    PrincipalSearcher insPrincipalSearcher = new PrincipalSearcher();
    insPrincipalSearcher.QueryFilter = insUserPrincipal;
    PrincipalSearchResult<Principal> results = insPrincipalSearcher.FindAll();
    foreach (Principal p in results)
    
        Console.WriteLine(p.Name);
    

【讨论】:

【参考方案6】:

您还可以通过 _spPageContextInfo 属性获取当前登录的用户 ID。

 _spPageContextInfo.userId

您将通过_spPageContextInfo获取当前用户的ID。试试这个可能对你有帮助。

【讨论】:

以上是关于如何在 Sharepoint 中找到已登录的用户?的主要内容,如果未能解决你的问题,请参考以下文章

在已经在Sharepoint上登录时使用节点JS HTML进行单点登录

powerquery导入sharepoint list后如何展开

SharePoint Online 创建网站集

创建加载用户控件的 SharePoint 2013 Web 部件

sharepoint 列表和登录用户问题

SharePoint Online 设置已删除用户OneDrive保留期