gpt4 book ai didi

asp.net-mvc - 发布到 Azure 之前和之后的 User.Identity.Name 不同

转载 作者:行者123 更新时间:2023-12-03 05:55:12 24 4
gpt4 key购买 nike

我在我的 Asp.net mvc Web 应用程序中使用 @User.Identity.Name。这在本地显示为域\用户,[email protected]部署后在 azure 站点上。有没有办法让它在本地和服务器上唯一,而不是使用@User.Identity.Name。由于这种冲突,我有很多代码破坏区域。

我向 Azure 上托管的应用程序添加了 Azure Active Directory 身份验证。

using (var context = new PrincipalContext(ContextType.Domain))
{
var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name);
var displayName = principal?.DisplayName;
}

此显示名称显示在本地,一旦发布到 Azure,它就像 null“”。发布后在 Azure 服务器上显示显示名称的最佳方式是什么?

最佳答案

您似乎正在将 AD 库用于传统的本地 AD。要针对 Azure AD 进行编程,您可以使用 OpenID Connect 对 Azure AD 租户的用户进行身份验证。请参阅下面的代码示例:

https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect

要获取当前用户的显示名称,您可以尝试:

var displayName = ((System.Security.Claims.ClaimsIdentity)User.Identity).Claims.Where(c => c.Type == "name").FirstOrDefault().Value;

如果您还想在使用 Azure AD 时显示 Domain\DisplayName,您可以通过以下方式获取域名:

var domian= ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn).Value.Split('@')[1].ToString();

关于asp.net-mvc - 发布到 Azure 之前和之后的 User.Identity.Name 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42450021/

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