示例#1
0
        private async Task RefreshClaims(string userId)
        {
            var identity = (ClaimsIdentity)User.Identity;
            var context  = Request.GetOwinContext();
            var claims   = await ProfileClient.GetClaims(userId);

            foreach (var claim in identity.Claims.Where(x => claims.Any(y => y.Type == x.Type)).ToList())
            {
                identity.RemoveClaim(claim);
            }
            identity.AddClaims(claims);
            context.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
            context.Authentication.SignIn(identity);
        }
示例#2
0
        private async Task InitViewBag()
        {
            ViewBag.ConnectUrls    = GetFederationManagementUrls(ViewBag.Claims, ManagementDisconnectedAccountType, "connect");
            ViewBag.DisconnectUrls = GetFederationManagementUrls(ViewBag.Claims, ManagementConnectedAccountType, "disconnect");
            try
            {
                var claims = await ProfileClient.GetClaims(User.Identity.GetUserId());

                var profile = new UpdateProfileClaimsViewModel
                {
                    Name    = claims.FirstOrDefault(x => x.Type == Common.Consts.DefaultClaimNamespace + "name")?.Value ?? "",
                    Address = claims.FirstOrDefault(x => x.Type == Common.Consts.DefaultClaimNamespace + "address")?.Value ?? ""
                };
                ViewBag.Profile = profile;
            }
            catch (ApiException)
            {
                ViewBag.Profile = new UpdateProfileClaimsViewModel {
                    Address = "", Name = ""
                };
            }
        }