gpt4 book ai didi

c# - 在 SharePoint 中检索友好名称作为声明用户

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:13 24 4
gpt4 key购买 nike

我会先解释一下我想做什么。我传入了一个声明标识符,例如 0e.t|saml provider|first.last@domain.local。我想将其修剪为 first.last@domain.local

我很清楚这可以通过简单的字符串格式化来完成,但是,这不是很灵活,所以如果传递了一些我不期望的东西,字符串格式化可能会失败。它更容易出现问题。

我想改为动态执行此操作。这是我尝试过的。

尝试使用上面的声明标识符EnsureUser,然后调用 SPUser.Name:

SPUser spUser = SPContext.Current.Web.EnsureUser(spUserName);
userName = spUser.Name;

我已经尝试将以下字符串作为 EnsureUser 中的参数,所有这些都会导致异常:在 Active Directory 中找不到具有指定 logonName 的用户。

0e.t|saml 提供商|first.last@domain.local

saml 提供商|first.last@domain.local

first.last@domain.local

同样,所有这些都失败了。

我尝试的另一种方法是使用 SPClaimProviderManager(来自 this blog ):

SPClaimProviderManager mgr = SPClaimProviderManager.Local;
if (mgr != null && SPClaimProviderManager.IsEncodedClaim(userName))
{
spUserName = mgr.DecodeClaim(SPContext.Current.Web.CurrentUser.LoginName).Value;
}

我想确保我正在尝试解码实际声明,而不是其他内容,因此我调用了 IsEncodedClaim。然而,这总是返回 false

我的问题:

1) 我在这里做错了什么导致这两种尝试都失败了?我需要做哪些不同的事情才能使它们正常运行?

2) 有没有更好的方法可以在不进行字符串解析的情况下获取友好的声明用户名?

最佳答案

叹息 声明字符串开头的 i: 不知何故被删掉了。

应该阅读 i:0e.t|saml provider|first.last@domain.local。将其添加回来后,一切都开始正常运行。

关于c# - 在 SharePoint 中检索友好名称作为声明用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com