如何在 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后如何展开