首页 > 解决方案 > 从数据库使用 Azure 身份验证并从下拉 .net core 3.1 更新时添加声明

问题描述

.net Core 3.1 我希望能够根据页面上的下拉选择从数据库选择中向登录用户添加声明。在 startup.cs 中调用时,以下扩展方法可以正常工作

options.Events.OnTokenValidated = async context => {
context.Principal.SetSelectedProvider("Provider1");
};

扩展方法:

public static class GraphClaimsPrincipalExtensions
    {

        public static string GetSelectedProvider(this ClaimsPrincipal claimsPrincipal)
        {
            return claimsPrincipal.FindFirstValue(GraphClaimTypes.MITOBSelectedProvider);
        }



        public static void SetSelectedProvider(this ClaimsPrincipal claimsPrincipal, String providerName)
        {
            var identity = claimsPrincipal.Identity as ClaimsIdentity;

            var existingClaim = identity.FindFirst(GraphClaimTypes.MITOBSelectedProvider);
            if (existingClaim != null)
                identity.RemoveClaim(existingClaim);

            identity.AddClaim(
                new Claim(GraphClaimTypes.MITOBSelectedProvider, providerName));

            //var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
            //authenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(new ClaimsPrincipal(identity), new AuthenticationProperties() { IsPersistent = true });


        }



    }

我不能使用相同的扩展方法作为页面回发的一部分来更改选定的提供程序。如何在页面回发后对声明进行此更改以保持不变,以便我可以访问所有页面上的新值。它将能够在整个活动会话期间使用,因此我想将它添加到索赔集合中。我在另一篇文章中找到了上面注释掉的行,但我没有 owincontext 并且似乎与具有 azure 身份验证的 .net core 3.1 无关。

标签: .net-core-3.1claimsazure-authentication

解决方案


推荐阅读